POI

来源:互联网 发布:mac全是大写 编辑:程序博客网 时间:2024/05/04 22:55

POI

简单的一个示例: 

public String execute() throws Exception {HSSFWorkbook workbook = new HSSFWorkbook();   //创建工作簿对象           HSSFSheet sheet = workbook.createSheet();             //创建工作表对象workbook.setSheetName(0,"商品管理表一");              //设置工作表的名称HSSFRow row = sheet.createRow((short)0);             //创建第一行(表头) HSSFCell cell = row.createCell((short) 0);      //创建第一个单元格cell.setCellValue("产品名称");                  //往单元格写入内容cell = row.createCell((short) 1);              //创建第一行的第二个单元格,以此往下......         cell.setCellValue("代号"); cell = row.createCell((short) 2);            cell.setCellValue("售价"); cell = row.createCell((short) 3);            cell.setCellValue("积分"); cell = row.createCell((short) 4);            cell.setCellValue("数量");                     //到此,第一行的表头创建完成                    List<Produce> list = produceService.showAllProduce();      //从数据库取出数据填充到单元格for(int i=0;i<list.size();i++){row = sheet.createRow((int)i+1); Produce p = list.get(i);row.createCell((short)0).setCellValue(p.getProductname());  // 创建单元格,并设置内容row.createCell((short)1).setCellValue(p.getDaihao());row.createCell((short)2).setCellValue(p.getPrice());row.createCell((short)3).setCellValue(p.getJifen());row.createCell((short)4).setCellValue(p.getQuantity());}try{FileOutputStream fOut = new FileOutputStream("F:/produce.xls");   // 将文件存到指定位置workbook.write(fOut);fOut.flush();fOut.close();}catch(Exception e){e.printStackTrace();}HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("message", "系统提示:导出Excel成功!");return SUCCESS;}


 

使用POI解析Excel20032007

Ø 解析2003版本的ExcelHSSF类型的对象;

Ø 解析2007版本的ExcelXSSF类型的对象;

 

API

workBook.getNumberOfSheets()   //获取工作表个数

HSSFSheet sheet = workBook.getSheetAt(noSheet);  //获取第几个工作表

int nRows = sheet.getPhysicalNumberOfRows();    //获取Excel表格的行数

row.getLastCellNum();   // 获得列数

 

cell.getCellType();     //获取单元格格式

在读取每一个Cell的值的时候,通过getCellType方法获得当前Cell的类型,在ExcelCell6种类型,如下面所示。 

  • CELL_TYPE_BLANK 空值 
  • CELL_TYPE_BOOLEAN 布尔型 
  • CELL_TYPE_ERROR 错误 
  • CELL_TYPE_FORMULA 公式型 
  • CELL_TYPE_STRING 字符串型 
  • CELL_TYPE_NUMERIC 数值型 

如果CellTypeCELL_TYPE_NUMERIC时,还需要进一步判断该Cell的数据格式,因为它有可能是Date类型,在Excel中的Date类型也是以Double类型的数字存储的。Excel中的Date表示当前时间与190011日相隔的天数,所以需要调用HSSFDateUtilisCellDateFormatted方法,判断该Cell的数据格式是否是Excel Date类型。如果是,则调用getDateCellValue方法,返回一个Java类型的Date

 

cell.getNumericCellValue()//返回单元格是数字格式的数值。返回值是double类型。

cell.getStringCellValue() //返回单元格是字符串格式的值。返回值是String类型。对于数字格式的单元格会抛出异常。

cell.getBooleanCellValue()//返回单元格是布尔型格式的值。返回值是boolean类型。

0 0
原创粉丝点击