POI提供API给Java程序对Microsoft Office格式档案读和写的功能
2017-12-07 10:13
190 查看
Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
Apache POI组件
Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。
以下是一个Poi生成excel的例子:
用到的jar包:
生成的表格:
图片中的样式可以根据
POI教程进行调整。
下面是一个读取excel的例子
例子生成的效果:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
Apache POI组件
Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。
POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。 HSSF (可怕的电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。 XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。 HPSF (可怕的属性设置格式) : 它用来提取MS-Office文件属性设置。 HWPF (可怕的字处理器格式) : 它是用来读取和写入MS-Word的文档扩展名的文件。 XWPF (XML字处理器格式) : 它是用来读取和写入MS-Word的docx扩展名的文件。 HSLF (可怕的幻灯片版式格式) : 它是用于读取,创建和编辑PowerPoint演示文稿。 HDGF (可怕的图表格式) : 它包含类和方法为MS-Visio的二进制文件。 HPBF (可怕的出版商格式) : 它被用来读取和写入MS-Publisher文件。
以下是一个Poi生成excel的例子:
package com.h3c.poi.traplib; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; //http://www.yiibai.com/apache_poi/apache_poi_fonts.html public class ExcelWrite{ public static void main(String[] args) { //第一步创建workbook HSSFWorkbook wb = new HSSFWorkbook(); //第二步创建sheet HSSFSheet sheet = wb.createSheet("测试"); //第三步创建行row:添加表头0行 HSSFRow row = sheet.createRow(0); HSSFCellStyle style = wb.createCellStyle(); //style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //居中 HSSFCellStyle style2 = wb.createCellStyle(); //加粗 short s = 2; HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short) 16); style2.setFont(font); //第四步创建单元格 HSSFCell cell = row.createCell(0); //第一个单元格 cell.setCellValue("姓名"); cell.setCellStyle(style2); cell = row.createCell(1); //第二个单元格 cell.setCellValue("年龄"); cell.setCellStyle(style2); //第五步插入数据 for (int i = 0; i < 5; i++) { //创建行 row = sheet.createRow(i+1); //创建单元格并且添加数据 row.createCell(0).setCellValue("aa"+i); row.createCell(1).setCellValue(i); } //第六步将生成excel文件保存到指定路径下 try { FileOutputStream fout = new FileOutputStream("E:\\Excel\\traplib\\trapLib.xls"); wb.write(fout); fout.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Excel文件生成成功..."); } }
用到的jar包:
生成的表格:
图片中的样式可以根据
POI教程进行调整。
下面是一个读取excel的例子
import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcelFileToList { public static void main(String[] args) throws IOException { String fileName="C:\\Users\\IBM_ADMIN\\Desktop\\promotion\\a.xls"; FileInputStream fis = new FileInputStream(fileName); Workbook workbook = null; //判断excel的两种格式xls,xlsx if(fileName.toLowerCase().endsWith("xlsx")){ workbook = new XSSFWorkbook(fis); }else if(fileName.toLowerCase().endsWith("xls")){ workbook = new HSSFWorkbook(fis); } //得到sheet的总数 int numberOfSheets = workbook.getNumberOfSheets(); System.out.println("一共"+numberOfSheets+"个sheet"); //循环每一个sheet for(int i=0; i < numberOfSheets; i++){ //得到第i个sheet Sheet sheet = workbook.getSheetAt(i); System.out.println(sheet.getSheetName()+" sheet"); //得到行的迭代器 Iterator<Row> rowIterator = sheet.iterator(); int rowCount=0; //循环每一行 while (rowIterator.hasNext()) { System.out.print("第"+(rowCount++)+"行 "); //得到一行对象 Row row = rowIterator.next(); //得到列对象 Iterator<Cell> cellIterator = row.cellIterator(); int columnCount=0; //循环每一列 while (cellIterator.hasNext()) { //System.out.print("第"+(columnCount++)+"列: "); //得到单元格对象 Cell cell = cellIterator.next(); //检查数据类型 switch(cell.getCellType()){ case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue()+" "); break; case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue()+" "); } } //end of cell iterator System.out.println(); } //end of rows iterator } //end of sheets for loop System.out.println("\nread excel successfully..."); //close file input stream fis.close(); } }
例子生成的效果:
相关文章推荐
- java提供功能创建自己的api文档
- JAVA多服务器通讯框架-聊天功能演示程序 V0.1 alpha 发布并提供下载
- Java读写Excel之POI超入门 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式
- Java5增加了新的类库并发集java.util.concurrent,该类库为并发程序提供了丰富的API
- POI编程——java程序中输出指定格式的Excel表格
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- 浅述如何为程序提供二次开发功能 - 1 (原创)
- ASP程序中提供在线文章翻译功能
- JAR 文件格式的强大功能(java中jar工具的使用)
- 用java程序将GBK字符转成UTF-8编码格式
- JAVA写的多线程下载程序,并具有断点续传功能
- 用JAVA创建XML文档,为java API文档添加搜索功能
- 使用Java程序实现随机验证码功能的实例
- 题目:使用命令行参数编写一个程序,其功能是将任意一个正整数m变换为指定的n 进制数串输出。命令行的格式为:
- 用java程序调用ffmpeg执行视频文件格式转换flv
- java 3D API官方教程:1.4 编写Java3D程序的一般步骤
- Java 6新特性一箩筐,将提供中文化的API文档
- 给您的文字编辑程序添加一剂“后悔药”-使用RichTextBox控件提供用户编辑功能,加入类似word的“撤销”和“恢复”功能
- ASP程序中提供在线文章翻译功能
- 【Java学习】JAR 文件格式的强大功能