`

POI

poi 
阅读更多
POI 生成Excel 封装好的util可以直接使用(支持下载,带有案例)Apache的Jakata项目的POI子项目,目标是处理ole2对象。 POI可以到http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 下载。 编译好的jar主要有这样4个:poi包,poi Browser包,poi hdf包,poi hssf例程包。实际运行时,需要有poi包就可以了。

HSSF提供给用户使用的对象在org.apache.poi.hssf.usermodel包中,主要部分包括Excell对象,样式和格式,还有辅助操作。有以下几种对象:
HSSFWorkbook excell的文档对象
HSSFSheet excell的表单
HSSFRow excell的行
HSSFCell excell的格子单元
HSSFFont excell字体
HSSFName 名称
HSSFDataFormat 日期格式

在poi1.7中才有以下2项:
HSSFHeader sheet头
HSSFFooter sheet尾

和这个样式
HSSFCellStyle cell样式

辅助操作包括
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表

下面是一个简单的例子



package  com.justinmobile.payease.admin.commons.excel;

import  java.io.FileNotFoundException;
import  java.io.FileOutputStream;
import  java.io.IOException;
import  java.util.Calendar;

import  org.apache.poi.hssf.usermodel.HSSFCell;
import  org.apache.poi.hssf.usermodel.HSSFCellStyle;
import  org.apache.poi.hssf.usermodel.HSSFDataFormat;
import  org.apache.poi.hssf.usermodel.HSSFRow;
import  org.apache.poi.hssf.usermodel.HSSFSheet;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
* 生成导出Excel文件对象
*
*  @author  John.Zhu
*
  */
public   class  XLSExport  {

     //  设置cell编码解决中文高位字节截断
      private   static   short  XLS_ENCODING  =  HSSFWorkbook.ENCODING_UTF_16;

     //  定制日期格式
      private   static  String DATE_FORMAT  =   " m/d/yy " ;  //  "m/d/yy h:mm"

     //  定制浮点数格式
      private   static  String NUMBER_FORMAT  =   " #,##0.00 " ;

     private  String xlsFileName;

     private  HSSFWorkbook workbook;

     private  HSSFSheet sheet;

     private  HSSFRow row;

     /**
     * 初始化Excel
     *
     *  @param  fileName
     *            导出文件名
      */
      public  XLSExport(String fileName)  {
         this .xlsFileName  =  fileName;
         this .workbook  =   new  HSSFWorkbook();
         this .sheet  =  workbook.createSheet();
    }

      /**
     * 导出Excel文件
     *
     *  @throws  XLSException
      */
      public   void  exportXLS()  throws  XLSException  {
         try   {
            FileOutputStream fOut  =   new  FileOutputStream(xlsFileName);
            workbook.write(fOut);
            fOut.flush();
            fOut.close();
        }   catch  (FileNotFoundException e)  {
             throw   new  XLSException( " 生成导出Excel文件出错! " , e);
        }   catch  (IOException e)  {
             throw   new  XLSException( " 写入Excel文件出错! " , e);
        }

    }

      /**
     * 增加一行
     *
     *  @param  index
     *            行号
      */
      public   void  createRow( int  index)  {
         this .row  =   this .sheet.createRow(index);
    }

      /**
     * 设置单元格
     *
     *  @param  index
     *            列号
     *  @param  value
     *            单元格填充值
      */
      public   void  setCell( int  index, String value)  {
        HSSFCell cell  =   this .row.createCell(( short ) index);
        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
        cell.setEncoding(XLS_ENCODING);
        cell.setCellValue(value);
    }

      /**
     * 设置单元格
     *
     *  @param  index
     *            列号
     *  @param  value
     *            单元格填充值
      */
      public   void  setCell( int  index, Calendar value)  {
        HSSFCell cell  =   this .row.createCell(( short ) index);
        cell.setEncoding(XLS_ENCODING);
        cell.setCellValue(value.getTime());
        HSSFCellStyle cellStyle  =  workbook.createCellStyle();  //  建立新的cell样式
         cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT));  //  设置cell样式为定制的日期格式
         cell.setCellStyle(cellStyle);  //  设置该cell日期的显示格式
     }

      /**
     * 设置单元格
     *
     *  @param  index
     *            列号
     *  @param  value
     *            单元格填充值
      */
      public   void  setCell( int  index,  int  value)  {
        HSSFCell cell  =   this .row.createCell(( short ) index);
        cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
        cell.setCellValue(value);
    }

      /**
     * 设置单元格
     *
     *  @param  index
     *            列号
     *  @param  value
     *            单元格填充值
      */
      public   void  setCell( int  index,  double  value)  {
        HSSFCell cell  =   this .row.createCell(( short ) index);
        cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
        cell.setCellValue(value);
        HSSFCellStyle cellStyle  =  workbook.createCellStyle();  //  建立新的cell样式
         HSSFDataFormat format  =  workbook.createDataFormat();
        cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT));  //  设置cell样式为定制的浮点数格式
         cell.setCellStyle(cellStyle);  //  设置该cell浮点数的显示格式
     }

}


调用的过程:

package  com.justinmobile.payease.admin.commons.excel;

import  java.util.Calendar;

/**
* 导出Excel示例
*
*  @author  John.Zhu
*
  */
public   class  XLSDemo  {

     public   static   void  main(String[] args)  {
        System.out.println( " 开始导出Excel文件 " );
        XLSExport e  =   new  XLSExport( " d:/test.xls " );
        e.createRow( 0 );
        e.setCell( 0 ,  " 编号 " );
        e.setCell( 1 ,  " 名称 " );
        e.setCell( 2 ,  " 日期 " );
        e.setCell( 3 ,  " 金额 " );
        e.createRow( 1 );
        e.setCell( 0 ,  1 );
        e.setCell( 1 ,  " 工商银行 " );
        e.setCell( 2 , Calendar.getInstance());
        e.setCell( 3 ,  111123.99 );
        e.createRow( 2 );
        e.setCell( 0 ,  2 );
        e.setCell( 1 ,  " 招商银行 " );
        e.setCell( 2 , Calendar.getInstance());
        e.setCell( 3 ,  222456.88 );
         try   {
            e.exportXLS();
            System.out.println( " 导出Excel文件[成功] " );
        }   catch  (XLSException e1)  {
            System.out.println( " 导出Excel文件[失败] " );
            e1.printStackTrace();
        }
    }
}



转自:http://www.blogjava.net/zJun/archive/2007/01/22/95385.html




下载代码如下:

protectedvoid downloadExcel (HSSFWorkbook workbook, HttpServletResponse response, String filename) throws IOException {


          OutputStream out = response.getOutputStream();


          response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(filename, "UTF-8"));


          response.setContentType("application/msexcel;charset=UTF-8");


          workbook.write(out);

          out.close();


}

解析功能
package com.gctx.web.action.home;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class TestExcelAction {
public static void main(String[] args) throws IOException {
File f=new File("c;\\a.xls");
FileInputStream is=new FileInputStream(f);
HSSFWorkbook wbs = new HSSFWorkbook(is);  
         HSSFSheet childSheet = wbs.getSheetAt(0);
         //获取行数
         System.out.println(childSheet.getLastRowNum());
         for (int i = 0; i < childSheet.getLastRowNum(); i++) {
HSSFRow row=childSheet.getRow(i);
//获取每行的列数
System.out.println(row.getLastCellNum());
if(null!=row){
for (int j = 0; j < row.getLastCellNum(); j++) {
HSSFCell cell=row.getCell(j);
switch(cell.getCellType()){
case HSSFCell.CELL_TYPE_NUMERIC://如果单元格式数字格式
System.out.println(cell.getNumericCellValue()+" ");
break;
case HSSFCell.CELL_TYPE_STRING://如果是字符串
System.out.println(cell.getStringCellValue()+" ");
break;
case HSSFCell.CELL_TYPE_FORMULA: // 公式  
                        System.out.print(cell.getCellFormula() + "   ");  
                        break;  
                    case HSSFCell.CELL_TYPE_BLANK: // 空值  
                        System.out.println(" ");  
                        break;  
                    case HSSFCell.CELL_TYPE_ERROR: // 故障  
                        System.out.println(" ");  
                        break;  
                    default:  
                        System.out.print("未知类型   ");  
                        break;  

}
}

}else {  
                System.out.print("-   ");  
            }  

}
}

}
分享到:
评论

相关推荐

    POI导出 POI导出 POI导出

    POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...

    poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad

    标题中的"poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad"提及的是Apache POI项目中的多个关键组件和目录结构。Apache POI是一个开源的Java库,专门用于读写Microsoft Office...

    POI poi相关所有jar包 poi jar包 poi最全jar包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel(.xlsx、.xls)、Word(.doc、.docx)和PowerPoint(.ppt、.pptx)。这个压缩包包含了POI项目中所有必要的jar包,总计十二个,确保了...

    POI中文帮助文档_POI_

    Apache POI是一个开源项目,主要用于读取和写入Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。这个“POI中文帮助文档”提供了全面的指南,帮助开发者理解和...

    poi-3.17 poi-3.16

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。POI 提供了一套 Java API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件。标题中的"poi-3.17 poi-...

    poi的所有jar包,poi, poi-ooxml,poi-ooxml-schemas的各个版本jar

    这个压缩包包含了POI项目的几个核心组件的jar文件,包括基础的`poi`库,以及支持Open XML格式(OOXML)的`poi-ooxml`和`poi-ooxml-schemas`。这些jar包在Java开发中非常有用,尤其是当你需要在应用程序中读取、写入...

    poi-3.10.1上传组件jar包 po poi-ooxml poi-ooxml-schemas

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。这个"poi-3.10.1上传组件jar包"包含了处理这些文档所需的Java库,使得开发者可以在Java应用中创建、读取和修改Office...

    poi jar包 官网下载 最新poi官网资源

    关于poi ,Apache在今年,也就是在2017年9月15日 正式发布了POI 3.17版本, Apache POI团队对于3.17版本进行了一些功能的修复。主要是几个新的功能区域和许多错误修复。 POI 3.17是支持Java 6的最后一个版本。下一个...

    百度poi,高德poi数据数据免费下载

    在IT行业中,POI(Point of Interest)是一个重要的概念,主要指地图上的兴趣点,例如商业场所、公共服务设施、交通站点等。百度POI和高德POI是两大知名的中国地图服务提供商,它们提供了丰富的地理信息数据,为...

    poi-3.9、poi-ooxml-3.9、poi-ooxml-schemas-3.9

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。在Java编程环境中,Apache POI 提供了API,让开发者能够方便地读取、写入和修改这些文件。标题提到的"poi-3.9、poi-...

    poi导入到eclipse

    "poi导入到eclipse" 在本文中,我们将学习如何将poi导入到eclipse中,并搭建好eclipse环境项目,以便更深一步地学习Java读取Microsoft Office的文件。 首先,需要下载poi的jar包。截至本文发表,poi最新版本是...

    java对Excel的jar包poi-3.15,poi-3.16,poi-3.17

    Java中的Apache POI库是用于处理Microsoft Office格式文件的强大工具,特别是Excel(.xls和.xlsx)文件。在Java编程环境中,POI库提供了一种高效且灵活的方式来读取、写入和修改Excel文档。在提供的压缩包中,我们有...

    poi 的jar 包

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。POI 提供了一套 Java API,使得开发者可以在Java应用程序中读取、写入和修改这些文件。这里的"poi 的jar 包"指的是...

    小软件POI数据下载神器

    今天分享一个能够实现零代码获取高德地图POI数据的工具。 该工具当前版本号为v1.3,主要功能特点包括: 支持通过拉框多边形以及点选省或地级市的方式输入POI数据下载范围 支持多选输入POI数据类型,例如酒店住宿、...

    poi官方文档资料

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint等。在本文中,我们将深入探讨Apache POI库,特别是它在处理Excel文件方面的能力。 Apache POI 提供了一个Java API,允许...

    poi3.17和poi4.0包含converter.jar

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc、.docx)、Excel(.xls、.xlsx)等。在标题中提到的 "poi3.17和poi4.0包含converter.jar",指的是Apache POI的不同版本,其中...

    Apache POI for Android

    Apache POI 是一个著名的开源项目,主要为处理微软的Office文档格式提供了一个强大的Java API。在Android开发中,Apache POI 提供了处理Excel文件的能力,使得开发者可以在Android设备上进行Excel的读写操作,无需...

    poi-5.2.0-API文档-中文版.zip

    赠送jar包:poi-5.2.0.jar; 赠送原API文档:poi-5.2.0-javadoc.jar; 赠送源代码:poi-5.2.0-sources.jar; 赠送Maven依赖信息文件:poi-5.2.0.pom; 包含翻译后的API文档:poi-5.2.0-javadoc-API文档-中文(简体)版...

    poi-4.0.0 最新版poi jar包 for java

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。在Java环境中,Apache POI提供了一套API,使得开发者可以方便地创建、修改和读取这些文档。"poi-4.0.0 最新版poi jar包 ...

    poi3.14jar包

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。这个"poi3.14jar包"是Apache POI的3.14版本,是一个Java库,允许开发者在Java应用程序中创建、读取和修改Microsoft ...

Global site tag (gtag.js) - Google Analytics