- 638
- 0
- 约1.75万字
- 约 20页
- 2020-08-19 发布于湖北
- 举报
7.3? 使用POI来处理Excel和Word文件格式
Microsoft的Office系列产品拥有大量的用户,Word、Excel也成为办公文件的首选。在Java中,已经有很多对于Word、Excel的开源的解决方案,其中比较出色的是Apache的Jakata项目的POI子项目。该项目的官方网站是/poi/。
POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。POI是完全的Java Excel和Java Word解决方案。POI子项目包括:POIFS、HSSF、HDF、HPSF。表7-2对它们进行了简要介绍。
表7-2? POI子项目介绍
子项目名
说明
POIFS(POI File System)
POIFS是POI项目中最早的最基础的一个模块,是Java到OLE 2 Compound Document Format的接口,支持读写功能,所有的其他项目都依赖与该项目。
HSSF(Horrible Spreadsheet Format)
HSSF是Java到Microsoft Excel 97(-2002)文件的接口,支持读写功能
HWPF(Horrible Word Processing Format)
HWPF是Java到Microsoft Word 97文件的接口,支持读写功能,但目前该模块还处于刚开始开发阶段,只能实现一些简单文件的操作,在后续版本中,会提供更强大的支持
HPSF(Horrible Property Set Format)
HPSF 是Java到OLE 2 Compound Document Format文件的属性设置的接口,属性设置通常用来设置文档的属性(标题,作者,最后修改日期等),还可以设置用户定义的属性。HPSF支持读写功能,当前发布版本中直支持读功能。
7.3.1? 对Excel的处理类
下面通过HSSF提供的接口对Excel文件经行处理。首先需要下载POI的包,可以到apache的官方网站下载,地址为:/jakarta/poi/,本书采用的是poi-2.5.1-finaljar,读者可以下载当前的稳定版本。把下载的包按照前面介绍的方式加入Build Path,然后新建一个ch7.poi包,并创建一个ExcelReader类。
ExcelReader类可以读取一个XLS文件,然后将其内容逐行提取出来,写入文本文件。其代码如下。
代码7.6
public class ExcelReader {
?? // 创建文件输入流
?? private BufferedReader reader = null;
?? // 文件类型
?? private String filetype;
?? // 文件二进制输入流
?? private InputStream is = null;
?? // 当前的Sheet
?? private int currSheet;
?? // 当前位置
?? private int currPosition;
?? // Sheet数量
?? private int numOfSheets;
?? // HSSFWorkbook
?? HSSFWorkbook workbook = null;
?? // 设置Cell之间以空格分割
?? private static String EXCEL_LINE_DELIMITER = ;
?? // 设置最大列数
?? private static int MAX_EXCEL_COLUMNS = 64;
?? // 构造函数创建一个ExcelReader
?? public ExcelReader(String inputfile) throws IOException, Exception {
????? // 判断参数是否为空或没有意义
????? if (inputfile == null || inputfile.trim().equals()) {
???????? throw new IOException(no input file specified);
????? }
????? // 取得文件名的后缀名赋值给filetype
????? this.filetype = inputfile.substring(inputfile.lastIndexOf(.) + 1);
????? // 设置开始行为0
????? currPosition = 0;
????? // 设置当前位置为0
????? currSheet = 0;
?????
原创力文档

文档评论(0)