`

Java代码生成和解析xls文件

阅读更多
使用poi来生成xls文件:引用的包poi-3.2.final.jar;

要了解的类HSSFWorkbook,HSSFSheet,HSSFRow,HSSFCell

HSSFWorkbook workbook=new HSSFWorkbook();得到一个Excel文件的引用

HSSFSheet sheet=workbook.createSheet();得到一个sheet,还有HSSFSheet sheet=workbook.createSheet("sheet1");方法可以设置Sheet的名称。

然后我们可以得到一行HSSFRow row=sheet.createRow(rowNum);

最后我们可以得到的是HSSFCell cell=row.create(cellNum);在Cell中还有一个类型的问题,一定要注意



下面是一个从数据库里面读取数据生成文件的方法

public void testQuery() {
    Transaction tx = null;
    tx = session.beginTransaction();
    Query query = session.createQuery("from Tid");
    List<Tid> list = query.list();
    tx.commit();
  int k = 0;
  HSSFWorkbook workbook = new HSSFWorkbook();
  HSSFSheet sheet = workbook.createSheet("sheet1");

  HSSFRow row = sheet.createRow(k);
  k++;

  //得到一个HSSFCell对象
  HSSFCell cell1 = row.createCell(0);

  //首先要设置HSSFCell的类型,一共有五种CELL_TYPE_STRING,CELL_TYPE_NUMBERIC,CELL_TYPE_FORMULA,

//CELL_TYPE_BLANK,CELL_TYPE_BOOLEAN,CELL_TYPE_ERROR,共6种

//具体可以查看文档http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html#getCellType()
  cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
  cell1.setCellValue((new HSSFRichTextString("MER_NUM")));



HSSFCell cell2 = row.createCell(1);
  cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
  cell2.setCellValue(new HSSFRichTextString("TML_NUM"));



  HSSFCell cell3 = row.createCell(2);
  cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
  cell3.setCellValue(new HSSFRichTextString("COUNTER_NUM"));


for (Iterator<Tid> it = list.iterator(); it.hasNext();) {
      Tid tid = (Tid) it.next();
       HSSFRow row_ = sheet.createRow((short) k);
      

       HSSFCell c1 = row_.createCell(0);
       c1.setCellType(HSSFCell.CELL_TYPE_STRING);
       c1.setCellValue((new HSSFRichTextString(tid.getMer_num())));

    

       HSSFCell c2 = row_.createCell(1);
       c2.setCellType(HSSFCell.CELL_TYPE_STRING);
       c2.setCellValue(new HSSFRichTextString(tid.getTml_num()));

  

       HSSFCell c3 = row_.createCell(2);
       c3.setCellType(HSSFCell.CELL_TYPE_STRING);
       c3.setCellValue(new HSSFRichTextString(tid.getCounter_num()));
       k++;
  }

  //新建输出流对象FileOutputStream
  FileOutputStream fos = null;
  try {
     fos = new FileOutputStream("D://T99_TID_RELA.xls");

    //然后写入HSSFWorkbook中
     workbook.write(fos);
     fos.flush();
  } catch (Exception e) { // TODO Auto-generated catch block
     e.printStackTrace();
  } finally {
   if (null != fos) {
    try {
     fos.close();
     System.out.println("文件生成!");
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
}



HSSFCell类型判断与取值的方法

public String getCellValue(HSSFCell cell)throws Exception{

       int cellType=cell.getCellType();

       String cellValue=null;

      switch(cellType){   

       case HSSFCell.CELL_TYPE_NUMERIC:  
            cellValue = String.valueOf(cell.getNumericCellValue());

           /*

             *DecimalFormat df=new DecimalFormat("#");
             *cellValue = df.format(cell.getNumericCellValue());

             *DecimalFormat表示的数据格式化,有很多中用法

             */
            break;  
        case HSSFCell.CELL_TYPE_FORMULA:  
            cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);  
            cellValue = String.valueOf(cell.getNumericCellValue());  
            break;  
        case HSSFCell.CELL_TYPE_BLANK:  
            cellValue=" ";  
            break;  
        case HSSFCell.CELL_TYPE_BOOLEAN:  
            break;  
        case HSSFCell.CELL_TYPE_ERROR:  
            break; 

        default:
             throw new IllegalArgumentException("数据格式不对");

      }

      return cellValue;

}







解析一个Excel文件

public void testRead() {
  HSSFWorkbook workbook = null;
  DecimalFormat df = new DecimalFormat("#");
  try {
   workbook = new  HSSFWorkbook(new FileInputStream(new File(
     "D://Book1.xls")));

   //POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath));
   // 获得Sheet数
   System.out
     .println("===SheetsNum===" + workbook.getNumberOfSheets());
   // 开始读取
   for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
    if (null != workbook.getSheetAt(i)) {
     // 获得一个Sheet
     HSSFSheet sheet = workbook.getSheetAt(i);
     System.out.println("共有" + sheet.getLastRowNum() + "行");
     for (int rowNumOfSheet = 10; rowNumOfSheet <= sheet
       .getLastRowNum(); rowNumOfSheet++) {
      if (null != sheet.getRow(rowNumOfSheet)) {
       // 获得一个row
       HSSFRow row = sheet.getRow(rowNumOfSheet);
       System.out.print("第" + rowNumOfSheet + "行   ");
       // System.out.print("一行有"+row.getLastCellNum()+"单元格");
       for (short cellNumOfRow = 0; cellNumOfRow < row
         .getLastCellNum(); cellNumOfRow++) {

        HSSFCell cell = row.getCell(cellNumOfRow);
        int cellType = cell.getCellType();
        switch (cellType) {
        case 0:// Numberic
          String strCell = df.format(cell.getNumericCellValue());
          System.out.print(strCell + " ");
         break;
        case 1:
          strCell = cell.getRichStringCellValue().getString();
          System.out.print(strCell + " ");
          break;
        default:
          System.out.println("数据格式不对!");
        }
       }
       System.out.print("/n");
      }
     }
    }
   }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

}





工具集HSSFCellUtil  http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/contrib/HSSFCellUtil.html



设置Sheet名称和单元格内容为中文

workbook.setSheetName(n,"库存",HSSFCell.ENCODING_UTF_16);

cell.setEncoding((short)1);cell.setCellValue("单位");



设置列宽和行高

sheet.setColumnWidth((short)column,(short)width);

row.setHeight((short)height);



添加区域,合并单元格

Region region=new Region((short)rowForm,(short)columnForm,(short)rowTo,(short)columnTo);

sheet.addMergedRegion(region);

// 得到该区域

sheet.getNumMergedRegion();



设置字体和内容位置

HSSFFont font=workbook.createFont();

font.setFontHeightInPoints((short) 11);//字号  
font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗  
style.setFont(font);  
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中  

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中  

style.setRotation((short)rotation);//单元格内容的旋转的角度  

HSSFDataFormat df = wb.createDataFormat();  

style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式  

cell.setCellFormula(string);//给单元格设公式  

style.setRotation((short)rotation);//单元格内容的旋转的角度  

cell.setCellStyle(style)



常用的单元格边框格式

public static HSSFCellStyle getCellStyle(short type) {     

         HSSFWorkbook workbook =new  HSSFWorkbook();  

         HSSFCellStyle style = wb.createCellStyle();  

         style.setBorderBottom(type);//下边框   

         style.setBorderLeft(type);//左边框   

         style.setBorderRight(type);//右边框   

         style.setBorderTop(type);//上边框   

         return style;

      } 

虚线HSSFCellStyle.BORDER_DOTTED

实线HSSFCellStyle.BORDER_THIN



最后是插入图片

/先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray  

ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();  

BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));  

ImageIO.write(bufferImg,"jpg",byteArrayOut);  

//读进一个excel模版  

FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");   

fs = new POIFSFileSystem(fos);  

//创建一个工作薄  

HSSFWorkbook wb = new HSSFWorkbook(fs);  

HSSFSheet sheet = wb.getSheetAt(0);  

HSSFPatriarch patriarch = sheet.createDrawingPatriarch();  

HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);       

patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG)); 

分享到:
评论

相关推荐

    java解析xls文件

    在Java编程环境中,解析XLS(Excel)文件是一项常见的任务,尤其在数据处理、报表生成或数据分析等场景中。XLS文件是Microsoft Excel早期版本(97-2003)使用的二进制文件格式,包含表格数据和样式信息。在Java中,...

    一个生成xls二进制文件的类

    这些库通常提供了对Excel文件结构的解析和构建,使得开发者无需深入了解文件格式的细节就能生成有效的XLS文件。 "example_export.php"可能是示例代码,展示了如何使用这个类将数据导出为XLS文件。这通常包括实例化...

    java生成xls文件

    ### Java生成XLS文件知识点详解 #### 一、概述 在Java中,生成XLS文件通常需要用到Apache POI库中的HSSF组件。本篇将基于一个具体的案例来讲解如何使用Java来读取文本文件的内容,并将其转换为XLS格式。 #### 二、...

    Java操作EXCEL (xls)模板生成EXCEL(xls)方法已经所需要的包

    ### Java操作Excel (xls)模板生成Excel (xls)方法及所需包详解 #### 一、引言 在日常开发工作中,经常会遇到需要批量处理Excel文件的需求。这些需求可能包括但不限于:根据现有数据自动生成报告、统计报表等。利用...

    java读取xls文件

    在Java编程中,处理Excel文件是一项常见的任务,特别是在数据分析、数据导入导出或者报表生成等场景。本示例主要关注如何使用Java来读取.xls格式的文件,这是一种Microsoft Excel的早期版本格式。以下是一个简单的...

    java实现生成ppt文件

    本示例将详细解析如何利用Java来创建PPT文件,以及涉及到的关键技术和库。 首先,Java本身并不直接支持创建PPT文件,但是我们可以借助Apache POI库来实现这个功能。Apache POI是一个流行的API,它允许开发者处理...

    Android 开发解析xls文件工具集

    在Android开发中,处理xls文件是一项常见的任务,特别是在数据导入导出、报表生成或数据分析等场景。xls文件是Microsoft Excel的旧版文件格式,用于存储表格数据,包括数字、文字和公式。本篇将深入探讨如何在...

    Java智能代码生成器

    在这个场景中,Java被用作开发代码生成器的基础,用于实现对Excel文件的解析和与MySQL数据库的交互。 2. **Java处理Excel文件**:Java可以使用Apache POI库来读取和操作.xls格式的Excel文件。POI是一个开源项目,...

    Java POI根据模板生成Excel(xlsx)文件

    Java POI库是一个广泛使用的开源项目,专门用于处理Microsoft Office格式的文件,包括Excel的.xls和.xlsx文件。在本示例中,我们关注的是如何利用Java POI来根据模板生成.xlsx格式的Excel文件。这个过程涉及到对...

    java 解析、生成 Excel XML 四个实例

    在提供的压缩包"src"中,应包含了实现这些实例的源代码和必要的Apache POI库。开发者可以通过阅读和运行这些代码来学习如何在Java中操作Excel和XML文件。此外,理解XML Schema(XSD)和样式表语言(XSLT)也可能有助...

    java解析Excel(xls、xlsx两种格式)所需要的所有jar

    此jar文件提供了对OOXML文档结构的解析和生成,使得Java程序能够理解并操作xlsx格式的Excel文件。 2. xmlbeans-2.6.0.jar:XMLBeans是另一个开源项目,它将XML Schema编译成Java类,使开发人员可以直接通过对象模型...

    java读xls文件成shell脚本

    在Java编程环境中,读取Excel(xls)文件并将其转换为Shell脚本是一种常见的数据处理需求,特别是在将数据导入数据库时。以下是一个基于给定描述的知识点详解: 1. **Java与Excel文件交互**: Java中处理Excel文件...

    android sqlite导出、解析xls文件

    4. **生成Excel文件**:这里我们可以使用Apache POI库,它是一个Java API,允许我们创建、修改和显示Microsoft Office格式的文件,包括.xls。首先,添加Apache POI依赖到项目中。然后,创建HSSFWorkbook对象表示工作...

    excel文档解析和生成xml文件

    本主题将详细探讨如何使用Java的Apache POI库读取Excel文件,并利用JDOM库生成XML文件。 首先,Apache POI是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。在Java中,我们可以...

    用于XLS文件转换的XLS2XML

    在压缩包“xls2xml-1.0.0”中,通常会包含源代码文件(可能是Java、Python、C#或其他编程语言)、文档、示例和可能的编译好的可执行文件。对于开发人员来说,通过查看源码,可以了解转换过程中的细节,例如如何使用...

    Java通过POI和JXL给Excel动态添加水印

    - **Apache POI**: 同样是处理Excel文件的强大Java库,除了支持.xls外还支持.xlsx等新版本格式,并且提供了更多的功能,如图表、图片等复杂元素的处理。 #### 实现步骤详解 ### 步骤一:创建模型类 首先,我们...

    读取excel文件,生成java文件.pdf

    在标题和描述中提到的“读取excel文件,生成java文件”是一个常见的开发任务,通常涉及到数据处理和代码自动化。这个过程可能包括从Excel表格中提取数据,然后根据这些数据自动生成Java源代码。以下是一些相关的知识...

    Java POI 生成Excel时显示货币格式

    对于Excel操作,Java POI提供了HSSF(对应.xls文件)和XSSF(对应.xlsx文件)两个组件,分别用于处理不同版本的Excel文件。 ### 二、显示货币格式 在使用Java POI生成Excel时,为了使数据更易读和专业,我们经常...

    JAVA用poi解析doc、docx、slx、xlsx,保证完整

    在Java编程环境中,Apache POI库是一个非常强大的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Word(doc、docx)、Excel(xls、xlsx)以及老版本的Excel文件(slx)。这个教程将详细介绍...

    上传下载Excel的Demo,java代码

    标题 "上传下载Excel的Demo,java代码" 描述了这个示例项目的核心功能,即在Java环境下处理Excel文件的上传和下载操作。这通常涉及到Web应用程序中的数据导入导出功能,便于用户通过浏览器进行数据的交互。在这个项目...

Global site tag (gtag.js) - Google Analytics