- 浏览: 304561 次
- 性别:
- 来自: 南京
最新评论
-
memorymyann:
不好意思我看错了
Java计算时间差 -
memorymyann:
好吧,网上很多方法一的,我不知道大家有验证过没有。我测试了下。 ...
Java计算时间差 -
ndzj981479673:
TonyLian 写道下这个包到WEB-INF/libs sp ...
org.springframework.web.servlet.DispatcherServlet -
Heart-wu:
com.jacob.com.ComFailException: ...
Jacob使用小结 -
wo4562658:
没有附件?getAnyCellStyle 这个方法,getHd ...
POI使用小结
本文主要是针对本人在实际项目中,利用POI来开发数据导入和导出的应用而总结而来。其实JAVA在处理Window OLE 2复合文档格式操作的API,还有很多POI、JExcelApi、IText等,而在实际的个人感觉POI确实是一个不错的选择。下面就POI开发的相关内容进行简要的介绍下,包括POI组成、开发步骤、具体示例、知识点汇总等内容进行讲解。POI组成
POI组成
官方网站: http://jakarta.apache.org/poi/,这个是POI的官方网站,用户可以先从这里下载。最新的版本3.0.2,下载解压后里面有三个jar包(poi-3.0.2-FINAL-20080204.jar/ poi-contrib-3.0.2-FINAL-20080204.jar/ poi-scratchpad-3.0.2-FINAL-20080204.jar),而在这里包中主要含:
org.apache.poi.hssf.eventmodel 处理在读取和写入Excel文档中生成的各种动作.
org.apache.poi.hssf.eventusermodel 提供读取Excel文档的各个类.
org.apache.poi.hssf.record.formula 包含公式处理类, 这些类使用在Excel文档中.
org.apache.poi.hssf.usermodel 包含生成Excel文档的各个类.
org.apache.poi.hssf.util 提供处理Excel文档各个属性的工具类.
开发步骤
1:先下载POI包;
2:解压后将里面的3个jar文件拷贝至WEB-INF\lib中。
3:刷新工程后,即可以使用jar包中的内容了。
读取POI文档
一:以文件名创建一个InputStream
二:以上面的InputStream实例创建一个HSSFWorkbook.
三:HSSFWorkbook的getSheetAt(index)可获取相应的工作页
四:工作页调用方法获取行
五:行再获取相应的格,调用单元格的方法,然后取出对应数据。
创建Excel文件
一:以new HSSFWorkbook()构造一个新的Excel文档
二:以HSSFWorkbook的createSheet("工作本名"),创建一个新的工作页。
三:新的工作页以createRow(RowIndex)依次创建行
四:HSSFRow以createCell(CellIndex)依次创建单元格
五:设置相应单元格的格式,值。
具体示例
示例一:读取Excel文件中的所有数据,包括对个工作表(薄)。
public static void ReadExcel2(String file) {
int total = 0;
try {
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));
int sn = wb.getNumberOfSheets();
for(int i=0;i<sn;i++){
HSSFSheet sheet = wb.getSheetAt(i);
for(int j=0;j<sheet.getLastRowNum();j++){
HSSFRow row = sheet.getRow(j);
for(int k=0;k<row.getLastCellNum();k++){
HSSFCell cell = row.getCell((short)k);
if(cell.getCellType()==HSSFCell.CELL_TYPE_STRING){
System.out.println(cell.getStringCellValue());
}
else{
System.out.println(cell.getBooleanCellValue());
}
total++;
}
}
}
System.out.println(total);
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
}
示例一:创建一个Excel,并把相应的数据添入到指定的单元格。
public static boolean createExcel(String file){
boolean flag = false;
try{
// wb,对应一个内存中的excel文档
HSSFWorkbook wb = new HSSFWorkbook();
// sheet创建一个工作页
for(int h =0;h<3;h++){
HSSFSheet sheet = wb.createSheet("jzh"+h);
//设置列的宽度
sheet.setDefaultColumnWidth((short)20);
//String[] s = new String[]{"姓名","年龄","地址","城市","公司","工作","职位","收入"};
String[] s = {"姓名","年龄","地址","城市","公司","工作","职位","收入"};
cellStyle = getAnyCellStyle(wb,getHdrFont(wb,12),HSSFCellStyle.ALIGN_CENTER, HSSFCellStyle.VERTICAL_CENTER, (short)-1, true);
for(int x=0;x<s.length;x++){
HSSFRow row = sheet.createRow(0);
//设置行的高度
row.setHeight((short)500);
HSSFCell cell = row.createCell((short)x);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(s[x]);
cell.setCellStyle(cellStyle);
}
for (short i = 1; i < 100; i++)
{
// HSSFRow,对应一行
HSSFRow row = sheet.createRow(i);
//设置行的高度
row.setHeight((short)500);
for (short j = 0; j < 8; j++)
{
// HSSFCell对应一格
HSSFCell cell = row.createCell(j);
cell.setEncoding(HSSFCell.ENCODING_COMPRESSED_UNICODE);
//cell.setCellValue("Java,我的信仰" + String.valueOf(i));
cell.setCellValue(true);
}
}
OutputStream out = new FileOutputStream(file);
wb.write(out);
out.close();
flag = true;
}
}
catch(Exception ex){
flag = false;
}
return flag;
}
知识点汇总
设置单元格格式
1. 创建字体,设置其为红色、粗体:
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
2、创建格式
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
3、应用格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题");
获得这个工作表数据行数
System.out.println(sheet.getLastRowNum());
获得列数
System.out.println(row.getLastCellNum());
设置第三列的宽度为5
sheet.setColumnWidth((short)3,(short)5);
设置字体格式
HSSFCellStyle titlestyle = workbook.createCellStyle();
HSSFFont titlefont = workbook.createFont();
titlefont.setFontHeightInPoints((short)18);
titlefont.setFontName("黑体");
titlefont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
titlestyle.setFont(titlefont);
titlestyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
titlestyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFCell titlecell = titlerow.createCell((short)((fileds.length) / 3));
titlecell.setCellStyle(titlestyle);
titlecell.setEncoding(HSSFCell.ENCODING_UTF_16);
titlecell.setCellValue(titles);
合并单元格
主要是从(1,3)到(5,6)的合并点
sheet.addMergedRegion(new Region((short)1,(short)3,(short)5,(short)6));
POI组成
官方网站: http://jakarta.apache.org/poi/,这个是POI的官方网站,用户可以先从这里下载。最新的版本3.0.2,下载解压后里面有三个jar包(poi-3.0.2-FINAL-20080204.jar/ poi-contrib-3.0.2-FINAL-20080204.jar/ poi-scratchpad-3.0.2-FINAL-20080204.jar),而在这里包中主要含:
org.apache.poi.hssf.eventmodel 处理在读取和写入Excel文档中生成的各种动作.
org.apache.poi.hssf.eventusermodel 提供读取Excel文档的各个类.
org.apache.poi.hssf.record.formula 包含公式处理类, 这些类使用在Excel文档中.
org.apache.poi.hssf.usermodel 包含生成Excel文档的各个类.
org.apache.poi.hssf.util 提供处理Excel文档各个属性的工具类.
开发步骤
1:先下载POI包;
2:解压后将里面的3个jar文件拷贝至WEB-INF\lib中。
3:刷新工程后,即可以使用jar包中的内容了。
读取POI文档
一:以文件名创建一个InputStream
二:以上面的InputStream实例创建一个HSSFWorkbook.
三:HSSFWorkbook的getSheetAt(index)可获取相应的工作页
四:工作页调用方法获取行
五:行再获取相应的格,调用单元格的方法,然后取出对应数据。
创建Excel文件
一:以new HSSFWorkbook()构造一个新的Excel文档
二:以HSSFWorkbook的createSheet("工作本名"),创建一个新的工作页。
三:新的工作页以createRow(RowIndex)依次创建行
四:HSSFRow以createCell(CellIndex)依次创建单元格
五:设置相应单元格的格式,值。
具体示例
示例一:读取Excel文件中的所有数据,包括对个工作表(薄)。
public static void ReadExcel2(String file) {
int total = 0;
try {
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));
int sn = wb.getNumberOfSheets();
for(int i=0;i<sn;i++){
HSSFSheet sheet = wb.getSheetAt(i);
for(int j=0;j<sheet.getLastRowNum();j++){
HSSFRow row = sheet.getRow(j);
for(int k=0;k<row.getLastCellNum();k++){
HSSFCell cell = row.getCell((short)k);
if(cell.getCellType()==HSSFCell.CELL_TYPE_STRING){
System.out.println(cell.getStringCellValue());
}
else{
System.out.println(cell.getBooleanCellValue());
}
total++;
}
}
}
System.out.println(total);
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
}
示例一:创建一个Excel,并把相应的数据添入到指定的单元格。
public static boolean createExcel(String file){
boolean flag = false;
try{
// wb,对应一个内存中的excel文档
HSSFWorkbook wb = new HSSFWorkbook();
// sheet创建一个工作页
for(int h =0;h<3;h++){
HSSFSheet sheet = wb.createSheet("jzh"+h);
//设置列的宽度
sheet.setDefaultColumnWidth((short)20);
//String[] s = new String[]{"姓名","年龄","地址","城市","公司","工作","职位","收入"};
String[] s = {"姓名","年龄","地址","城市","公司","工作","职位","收入"};
cellStyle = getAnyCellStyle(wb,getHdrFont(wb,12),HSSFCellStyle.ALIGN_CENTER, HSSFCellStyle.VERTICAL_CENTER, (short)-1, true);
for(int x=0;x<s.length;x++){
HSSFRow row = sheet.createRow(0);
//设置行的高度
row.setHeight((short)500);
HSSFCell cell = row.createCell((short)x);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(s[x]);
cell.setCellStyle(cellStyle);
}
for (short i = 1; i < 100; i++)
{
// HSSFRow,对应一行
HSSFRow row = sheet.createRow(i);
//设置行的高度
row.setHeight((short)500);
for (short j = 0; j < 8; j++)
{
// HSSFCell对应一格
HSSFCell cell = row.createCell(j);
cell.setEncoding(HSSFCell.ENCODING_COMPRESSED_UNICODE);
//cell.setCellValue("Java,我的信仰" + String.valueOf(i));
cell.setCellValue(true);
}
}
OutputStream out = new FileOutputStream(file);
wb.write(out);
out.close();
flag = true;
}
}
catch(Exception ex){
flag = false;
}
return flag;
}
知识点汇总
设置单元格格式
1. 创建字体,设置其为红色、粗体:
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
2、创建格式
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
3、应用格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题");
获得这个工作表数据行数
System.out.println(sheet.getLastRowNum());
获得列数
System.out.println(row.getLastCellNum());
设置第三列的宽度为5
sheet.setColumnWidth((short)3,(short)5);
设置字体格式
HSSFCellStyle titlestyle = workbook.createCellStyle();
HSSFFont titlefont = workbook.createFont();
titlefont.setFontHeightInPoints((short)18);
titlefont.setFontName("黑体");
titlefont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
titlestyle.setFont(titlefont);
titlestyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
titlestyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFCell titlecell = titlerow.createCell((short)((fileds.length) / 3));
titlecell.setCellStyle(titlestyle);
titlecell.setEncoding(HSSFCell.ENCODING_UTF_16);
titlecell.setCellValue(titles);
合并单元格
主要是从(1,3)到(5,6)的合并点
sheet.addMergedRegion(new Region((short)1,(short)3,(short)5,(short)6));
评论
2 楼
wo4562658
2012-10-08
没有附件?getAnyCellStyle 这个方法,getHdrFont这个方法来自哪里 ?
1 楼
jamesji
2008-05-02
I don't think you are on the right direction, have a look on Eclipse BIRT project. It support ppt, doc, pdf, xls, and html formats. And its plugin is very easy to use, and save you tons of time.
发表评论
-
synchronized(this)的一些理解
2011-12-06 18:58 1013对synchronized(this)的 ... -
Comparator和Comparable在排序中的应用
2011-07-30 11:21 899当需要排序的集合或数组不是单纯的数字型时,通常可以使用Co ... -
如何将文件中Base64进制数据生成X509证书
2010-12-16 19:50 2765byte[] ciphertext1 = new BASE64 ... -
Java相关数字签名技术纪要
2010-12-16 18:59 1210一:需要包含的包 ... -
jdom通过string生产xml文档
2010-12-09 10:50 1079生产xml文档: XMLOutputter outpu ... -
Tomcat支持Https访问
2010-11-10 20:01 3192用Tomcat来配置SSL主要有下面这么两大步骤: 一、生成证 ... -
一个tomcat配置多个端口
2010-10-19 18:43 3076第一步、修改server.xml[..\Tomcat 6.0\ ... -
Servlet上传文件及发送HTTP请求至Servet上传文件。
2010-08-12 18:30 1659Servlet接受HTTP消息,解析内容并输出至文件中 // ... -
如何在工程指定目录下保存文件。
2010-08-11 18:59 12041:Servlet中 String fileDir ... -
各进制基本概念。
2010-07-30 12:26 1153二进制: 二进制是逢2进位的进位制,0、 ... -
Junit小结
2010-07-20 08:58 657一 几个常用注释 @Before 被它注释的方法, ... -
JMockit_UT小结
2010-07-15 16:11 11551:模拟方法抛出异常 fin ... -
如何将当前时间延迟至指定的年、月、日后日期。
2010-06-23 19:27 1031Calendar cale = Calenda ... -
tomcat添加gzip功能
2010-03-04 15:24 2018在文件tomcat/conf/server.xml 中添加红 ... -
HttpClient笔记
2010-01-16 20:03 3325背景:因为想写一个测试tomcat连接的程序,就试试自已去构造 ... -
ThreadLocal知识
2009-11-14 21:57 2703首先,ThreadLocal 不是用来解决共享对象的多线程访问 ... -
一个不错的JDBC连接池教程(带具体例子)
2009-06-11 21:17 1255关键字: jdbc 1.前言 数据库应用,在许多软件系统中 ... -
Java程序对图片的各种处理
2009-06-11 21:12 1620关键字: 缩放图像、图像切割、图像类型转换、彩色转为黑白 Ja ... -
Java计算时间差
2009-06-11 21:10 5839比如:现在是2004-03-26 13:31:40 ... -
Unable to instantiate Action(关于struts2.0异常)
2009-05-17 20:39 7795[ERROR] - [2009-03-12 14:27:59] ...
相关推荐
个人整理的POI解析EXCEL常用API详解 里面包括我在使用过程中的一些心得
POI_3.8_API.CHM; POI3.5_HSSF_和XSSF_Excel操作快速入门手册.pdf; poi-bin-3.9-20121203.zip; poi使用总结.txt; POI整理.doc;
在本文中,我们将深入探讨如何使用POI进行Excel的读写操作,并进行总结。 1. POI基本概念 Apache POI 提供了HSSF(Horrible Spreadsheet Format)用于读写旧版的.xls格式的Excel文件,而XSSF则用于处理.xlsx格式的...
### POI使用方法详解 #### 一、简介 Apache POI是Java API中用于处理Microsoft Office格式文件(如Excel和Word)的一个强大的工具包。它提供了读取、创建和修改这些文件的功能,而无需安装Office软件。本篇文档将...
总结,Apache POI提供了一套完整的API,使得在Java中操作Excel文件变得简单。通过循环读取数据和应用模板,我们可以快速生成大量定制化的Excel报告。在"poiDemo2"这个示例中,你可以找到具体实现这些步骤的代码,...
Java POI 技巧总结 Java POI 是一个流行的库,允许开发者在Java应用程序中创建、修改和读取Microsoft Office格式的文件,如Excel(.xlsx 和 .xls)。本总结将详细探讨如何利用POI库进行Excel文件的操作,包括创建...
"poi 生成pdf等" 这个标题指的是使用Apache POI库来创建PDF和其他格式的文档。Apache POI是一个流行的开源Java API,主要用于读取和写入Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)等...
本教程将详细介绍如何利用Apache POI库来实现使用多个Sheet(工作簿)导出一个Excel文件的功能。 一、Apache POI简介 Apache POI 是一个开源项目,提供API来读取、写入和修改Microsoft Office文件格式,如Word(DOC...
Java使用Apache POI-TL库生成Word文档是一个...总结起来,Apache POI-TL是Java开发中生成Word文档的强大工具,它结合了Apache POI的底层操作能力和基于模板的生成方式,使得开发者能方便快捷地创建专业级别的Word文档。
4. **poi使用总结.txt**:这是作者使用Apache POI的一些心得体会,可能包含了他们在实际开发中遇到的问题和解决方案。对于正在使用或计划使用POI的人来说,这是一种宝贵的经验分享。 5. **poi pom编写.txt**:在...
总结来说,Apache POI 3.10.1版本的上传组件为Java开发者提供了一套强大的工具,用于处理和操作Microsoft Office的文件格式,涵盖了Excel、Word和PowerPoint的多种功能,大大提升了开发效率并扩展了应用的可能性。
总结来说,Apache POI 是Java开发中处理Excel文件的强大工具,它提供了全面的API来操作Excel的各种特性。结合 poi-3.9.jar、poi-ooxml-3.9.jar 和 poi-ooxml-schemas-3.9.jar 这三个库,开发者可以构建出功能丰富的...
总结,Apache POI是一个强大的工具,它允许开发者用Java编程语言无缝地操作Word和Excel文档。通过理解其API和类结构,可以实现复杂的文档处理需求,如自动化报告生成、数据导入导出等。在实际应用中,应根据需求选择...
在本文中,我们将深入探讨如何使用Apache POI(POI-3.6.jar版本)来实现Excel的导入和导出功能。这是一项关键技能,尤其是在数据处理和报告生成的场景中。 **1. POI基础** Apache POI提供了HSSF和XSSF两个API,...
总结起来,"使用poi从数据库导出excel表的示例"是一个结合了Struts1 MVC框架和Apache POI库的Java编程任务,它涉及数据库连接、SQL查询、Excel文件生成以及Web应用响应。这个过程不仅有助于数据的高效管理和分享,也...
下面通过一个示例来展示如何使用 POI 创建 Excel 文档。 ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel....
总结来说,这个项目展示了如何利用Java的Apache POI库读取Excel数据,结合XML解析进行数据验证,最后将验证通过的数据导入到数据库。这个过程涉及到文件I/O、XML处理、数据验证、数据库操作等多个核心Java技术,对于...
总结,Java POI为开发者提供了一种方便的方式来自动化处理PowerPoint文件,无论是创建全新的演示文稿,还是编辑已有的PPT文件,都能灵活应对。通过阅读和实践提供的示例代码,你将能够更好地掌握这一技能。
这篇博客文章“POI操作Excel常用方法总结”可能详细介绍了如何利用Apache POI库在Java环境中读写Excel文件。以下是对该主题的一些关键知识点的详细说明: 1. **Apache POI介绍**: Apache POI是开源项目,提供了...
【描述】提到的"一个小的poi的maven项目,实现了直接读取对象到excel中",这意味着该项目展示了如何将Java对象的数据直接写入到Excel工作表中,这对于数据导出或者报告生成场景非常实用。这个过程通常包括以下几个...