Apache POI的使用

2019-03-27 01:01|来源: 网路

              Apache POI


Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
结构:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。

创建Excel 文档

示例1将演示如何利用Jakarta POI API 创建Excel 文档。
示例1程序如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java .io.FileOutputStream;
public class CreateXL {
/** Excel 文件要存放的位置,假定在D盘下*/
public static String outputFile="D:\\test.xls";
public static void main(String argv[]){
try{
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();

// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"效益指标"的工作表,其语句为:
// HSSFSheet sheet = workbook.createSheet("效益指标");
HSSFSheet sheet = workbook.createSheet();

// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow((short)0);

//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell((short) 0);

// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);

// 在单元格中输入一些内容
cell.setCellValue("增加值");

// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);

// 把相应的Excel 工作簿存盘
workbook.write(fOut);
fOut.flush();

// 操作结束,关闭文件
fOut.close();

System.out.println("文件生成...");
}catch(Exception e) {
System.out.println("已运行 xlCreate() : " + e );
}
}
}


读取Excel文档中的数据

示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为test1.xls的Excel文件。
示例2程序如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java .io.FileInputStream;
public class ReadXL {
/** Excel文件的存放位置。注意是正斜线*/
public static String fileToBeRead="D:\\test1.xls";
public static void main(String argv[]){
try{
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

// 创建对工作表的引用。
// 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
HSSFSheet sheet = workbook.getSheet("Sheet1");

// 也可用getSheetAt(int index)按索引引用,
// 在Excel文档中,第一张工作表的缺省索引是0,
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
// 读取左上端单元
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);

// 输出单元内容,cell.getStringCellValue()就是取所在单元的值
System.out.println("左上端单元是: " + cell.getStringCellValue());
}catch(Exception e) {
System.out.println("已运行xlRead() : " + e );
}
}
}


设置单元格格式

在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:

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("标题 "); 
处理WORD文档
import java .io.*;
import org.textmining.text.extraction.WordExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
public class TestPoi {
public TestPoi() {
}
public static void main(String args[]) throws Exception
{
FileInputStream in = new FileInputStream ("D:\\a.doc");
WordExtractor extractor = new WordExtractor();
String str = extractor.extractText(in);
//System.out.println("the result length is"+str.length());
System.out.println(str);
}
}
Apache软件基金会
顶级项目
ActiveMQ    Ant       Apache HTTP Server   APR
Beehive    Camel     Cassandra        Cayenne
Cocoon      Commons     Derby              Directory
Excalibur    Felix      Forrest          Geronimo
Gump     Hadoop   Harmony         HBase
iBATIS           Jackrabbit    James         Lenya
Lucene         Maven     mod_perl          MyFaces
OFBiz         OpenEJB    OpenJPA            POI
Roller      Shale       SpamAssassin     stdcxx
Struts        Subversion   Tapestry           Tomcat
Traffic Server  Tuscany    Velocity         Wicket
XMLBeans

其他项目
Jakarta项目    Apache XML    Apache Incubator

子项目
BCEL    BSF    Cactus JMeter
Slide    Xerces   Batik    FOP
Log4j    XAP    River    ServiceMix
Log4Net   Abdera   Ivy    CXF
ODE    Solr


转自:http://www.cnblogs.com/yangzumin/p/3179871

相关问答

更多
  • 测试结果在我的机器上: HSSF:2秒 SXSSF:5秒 XSSF:27秒 机器规格: CPU: Intel i3-2100, 3.10 GHz, 4-cores RAM: 16GB OS: Windows 7 64bit JDK: 1.7.0_76 我进行了分析,发现由于xmlbeans和poi-ooxml-schemas库中的同步方法, xmlbeans速度很慢。 您可以通知poi开发人员并要求检查此案例。 Test results on my machine: HSSF: 2 sec SXSSF: ...
  • Android正在使用与Java正则表达式引擎略有不同的ICU正则表达式库。 看到这个参考 : Unicode脚本,块,类别和二进制属性使用Perl中的\p和\P结构编写。 如果输入具有属性prop,则\p{prop}匹配,而如果输入具有该属性,则\P{prop}不匹配。 因此,模式应该写成 Pattern nonAlphabeticPattern = Pattern.compile("\\P{L}"); Android is using ICU regex library that is a bit ...
  • 我重新解决了问题,这很简单,问题是由于我用阿拉伯语替换法语单词,因此他们只是用来定位我必须修改文本的地方,他们可以是任何一个charchter,更合适的是阿拉伯语! i resloved the problem it's so simple , the problem is due that i replace french word with arab ones and since this they are just a words used to locate where i have to modi ...
  • 感谢Gagravarr指出我正确的方向。 似乎我没有完整的ooxml-schemas-1.1.jar。 此代码现在可以完美地设置边距 CTSectPr sectPr = document.getDocument().getBody().addNewSectPr(); CTPageMar pageMar = sectPr.addNewPgMar(); pageMar.setLeft(BigInteger.valueOf(720L)); pageMar.setTop(BigInteger.valu ...
  • 任何人都可以向我建议我应该去哪一个? Apache POI和Aspose有哪些限制? 这是非常困难和普遍的问题,只能有非常普遍的答案。 每个软件项目都有不同的要求和功能。 对于每个项目来说,使用第三方组件的可行性很可能也不同。 要选择不同的第三方很困难,因为您需要做更多或更少的事情 需求评估(哪个产品符合您的要求或者紧密满足) 在购买产品之前和之后看看客户支持有多好 第三方产品的功能比较 找到多少稳定的产品。 检查他们发布了多少个版本。 新版本有错误修复,新功能? 独立来源的任何奖项 API和文档的总体可用 ...
  • 将评论提升为答案... Apache POI具有少量依赖关系 ,这些依赖关系完全列在网站的“ 组件”页面上。 您需要包含您正在使用的任何POI模块的依赖项。 在您的情况下,您获得的异常表明Commons Codec库缺失,并补充说明了解决问题。 Promoting a comment to an answer... Apache POI has a small number of dependencies, which are fully listed on the Components page on t ...
  • 您不能只从一个工作簿中获取Sheet对象,并将其添加到不同的工作簿中。 您需要做的是同时打开旧工作簿和新工作簿,并在新工作簿中创建工作表。 接下来,将旧工作表中使用的所有样式克隆到新工作表(HSSFCellStyle有一种方法,用于将样式从一个工作簿克隆到另一个工作簿)。 最后,迭代所有单元格并将其复制过来。 You can't just take a Sheet object from one Workbook, and add it to a different Workbook. What you'l ...
  • 1.在java中解决OutOfMemoryError的简单方法是使用JVM选项"-Xmx512M"来增加最大堆大小,这将立即解决你的OutOfMemoryError。 Java虚拟机(JVM)以固定的内存上限运行,您可以对其进行修改: -Xms - Set initial Java heap size -Xmx - Set maximum Java heap size $ java -Xms512m -Xmx1024m JavaApp 2.解决Java中的OutOfMemoryE ...
  • 我们当然可以在Android中移植Apache POI API。 我做的示例代码是在Apache POI的帮助下计算功率点演示中的幻灯片数量。 We can certainly port Apache POI API in Android. The example code that i made is to count the number of slides in a power point presentation with the help of Apache POI.
  • 这个stackoverflow帖子帮助了我。 我不得不删除META-INF中的一些文件并重新压缩文件夹并将其重命名为jar是不够的,我需要用这个命令实际创建jar: jar cvf org.apache.poi_3.9.0.v201303080712.jar . This stackoverflow post helped me. I had to delete a few files in META-INF and also rezipping the folder and renaming it to ...