一.POI
简介
Jakarta POI
是apache
的子项目,目标是处理ole2
对象。它提供了一组操纵Windows
文档的Java API
目前比较成熟的是HSSF
接口,处理MS Excel
(97-2002
)对象。它不象我们仅仅是用csv
生成的没有格式的可以由Excel
转换的东西,而是真正的Excel
对象,你可以控制一些属性如sheet,cell
等等。
二.HSSF
概况
HSSF
是Horrible SpreadSheet Format
的缩写,也即“讨厌的电子表格格式”。 也许HSSF
的名字有点滑稽,就本质而言它是一个非常严肃、正规的API
。通过HSSF
,你可以用纯Java
代码来读取、写入、修改Excel
文件。
HSSF
为读取操作提供了两类API
:usermodel
和eventusermodel
,即“用户模型”和“事件-
用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。
三.开始编码
1
.
准备工作
要求:JDK 1.4+POI
开发包
可以到
http://www.apache.org/dyn/closer.cgi/jakarta/poi/
最新的POI
工具包
2
.
EXCEL
结构
HSSFWorkbook excell
文档对象介绍
HSSFSheet excell
的表单
HSSFRow excell
的行
HSSFCell excell
的格子单元
HSSFFont excell
字体
HSSFName
名称
HSSFDataFormat
日期格式
在poi1.7
中才有以下2
项:
HSSFHeader sheet
头
HSSFFooter sheet
尾
和这个样式
HSSFCellStyle cell
样式
辅助操作包括
HSSFDateUtil
日期
HSSFPrintSetup
打印
HSSFErrorConstants
错误信息表
3
.具体用法实例
(采用
usermodel
)
如何读Excel
读取Excel
文件时,首先生成一个POIFSFileSystem
对象,由POIFSFileSystem
对象构造一个HSSFWorkbook
,该HSSFWorkbook
对象就代表了Excel
文档。下面代码读取上面生成的Excel
文件写入的消息字串:
try{
POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("d:/workbook.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short) 0);
String msg = cell.getStringCellValue();
System.out.println(msg);
}catch(Exception e){
e.printStackTrace();
}
如何写excel
,
将excel
的第一个表单第一行的第一个单元格的值写成“a test
”。
POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("workbook.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
cell.setCellValue("a test");
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
4
.
可参考文档
POI
主页:http://jakarta.apache.org/poi/
,
初学者如何快速上手使用POI HSSF
http://jakarta.apache.org/poi/hssf/quick-guide.html
。
里面有很多例子代码,可以很方便上手。
5、中文乱码问题
//把List expItems,写到EXCEL文件中
FileOutputStream fileOut = new FileOutputStream(filePath);
HSSFWorkbook wb = new HSSFWorkbook();// HSSFWorkbook
HSSFSheet sheet = wb.createSheet();//
wb.setSheetName(0,“实验项目列表--中文测试“,HSSFWorkbook.ENCODING_UTF_16);
HSSFRow row = sheet.createRow((short) 0);
HSSFCell cell;
Iterator iter = expItems.iterator();
int i = 0;
while (iter.hasNext()) {
cell = row.createCell((short) i);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(iter.next().toString());
i++;
}
wb.write(fileOut);
fileOut.close();
}
四.使用心得
POI HSSF
的usermodel
包把Excel
文件映射成我们熟悉的结构,诸如Workbook
、Sheet
、Row
、Cell
等,它把整个结构以一组对象的形式保存在内存之中,便于理解,操作方便,基本上能够满足我们的要求,所以说这个一个不错的选择。
-------------------------------
前面已经讲过利用POI读写Excel,下面是一个用POI向Excel中插入图片的例子。
官方文档:
Images
are part of the drawing support. To add an image just call
createPicture() on the drawing patriarch. At the time of writing the
following types are supported:
PNG
JPG
DIB
It is not
currently possible to read existing images and it should be noted that
any existing drawings may be erased once you add a image to a sheet.
// Create the drawing patriarch. This is the top level container for
// all shapes. This will clear out any existing shapes for that sheet.
通过HSSFPatriarch类createPicture方法的在指定的wb中的sheet创建图片,它接受二个参数,第一个是HSSFClientAnchor,设定图片的大小。
package com.poi.hssf.test;
import java.io.FileOutputStream;
import java.io.File;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;;
public class TestPOI {
public static void main(String[] args) {
FileOutputStream fileOut = null;
BufferedImage bufferImg =null;
BufferedImage bufferImg1 = null;
try{
//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();
bufferImg = ImageIO.read(new File("d:/PieChart.jpg"));
bufferImg1 = ImageIO.read(new File("d:/fruitBarChart.jpg"));
ImageIO.write(bufferImg,"jpg",byteArrayOut);
ImageIO.write(bufferImg1,"jpg",byteArrayOut1);
//创建一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");
//HSSFRow row = sheet1.createRow(2);
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,512,255,(short) 1,1,(short)10,20);
HSSFClientAnchor anchor1 = new HSSFClientAnchor(0,0,512,255,(short) 2,30,(short)10,60);
anchor1.setAnchorType(2);
//插入图片
patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
patriarch.createPicture(anchor1 , wb.addPicture(byteArrayOut1.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
fileOut = new FileOutputStream("d:/workbook.xls");
//写入excel文件
wb.write(fileOut);
fileOut.close();
}catch(IOException io){
io.printStackTrace();
System.out.println("io erorr : "+ io.getMessage());
} finally
{
if (fileOut != null)
{
try {
fileOut.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
分享到:
相关推荐
它将XML文档映射到Java对象,使得POI可以方便地操作Excel文件中的元素。 `poi-ooxml-5.2.1.jar`:此文件包含了处理OOXML文件格式的完整功能,与lite版本相比,它提供了更全面的API和功能。 `poi-scratchpad-5.2.1....
总结起来,Java实现Excel中插入图片的核心步骤包括:导入Apache POI库,创建并操作工作簿和工作表,读取和创建图片对象,创建绘图工作表,设置图片位置,最后保存工作簿。在实际开发中,可能还需要处理图片格式转换...
FreeMarker和Apache POI是两种在Java开发中广泛使用的工具,它们在处理文档生成和操作方面各有专长。本文将详细介绍这两个库如何协同工作来创建带有图片的Word文档。 **FreeMarker** FreeMarker是一个模板引擎,...
在Java编程领域,Apache POI库是一个非常实用的工具,它允许开发者读写Microsoft Office格式的文件,如Word、Excel和PowerPoint。本项目“Java利用poi对word插入文字图片”是一个具体的示例,旨在教给你如何使用...
Java通过Apache POI库操作Excel是Java开发人员处理Microsoft Office文档的一种常见方法,特别是当需要在应用程序中生成、读取或修改Excel数据时。Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够...
在标题和描述中提到的"java利用poi操作excel所需要的jar包"是POI项目的核心依赖,包括以下几个部分: 1. **poi-3.14.jar**: 这是Apache POI的主要库,提供了对低级HSSF(Horrible Spreadsheet Format)的支持,用于...
总的来说,使用Apache POI在Android中生成Word和Excel文档涉及了多个步骤,包括数据读取、文件操作、文档结构构建以及格式化。这个过程需要对XML、Java I/O、Android文件系统权限管理和POI API有深入理解。开发者...
Apache POI 是一个流行的开源库,它允许开发者使用 Java 来读写 Microsoft Office 格式的文件,其中包括 Excel 工作簿(.xlsx 和 .xls 文件)。下面我们将深入探讨如何使用 Java POI 库来操作 Excel。 首先,我们...
在Java编程中,有时我们需要处理来自不同文档格式的数据,例如从Word文档中提取表格内容,并将其转换成Excel文件。这通常涉及到使用Apache POI库,一个强大的API,用于读写Microsoft Office格式的文件,包括Word(....
本项目利用Apache POI库处理doc、excel和pdf,以及使用jxl库专门处理Excel文件,提供了一套完整的解决方案。 Apache POI是一个开源的Java库,它允许开发者创建、修改和显示Microsoft Office格式的文件,包括Word(....
在Java环境中,Apache POI 提供了一套API,使得开发者能够创建、修改和读取Excel文件。这个压缩包包含了Apache POI库的多个版本及其依赖库,如ooxml-schemas、xmlbeans等,用于支持对Excel文件的OOXML(Office Open ...
Java POI是一个强大的库,主要用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本示例中,我们将探讨如何使用POI进行一系列操作,包括将Word文档转换为HTML,以及从数据库导出数据到Excel。 1. ...
Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本文中,我们将深入探讨如何使用Apache POI在Word文档中插入文本和图片,这对于创建动态报告模板尤其有用。 ...
2. **写入Excel文件**:POI允许开发者创建新的Excel文件或向已有的文件添加数据。可以设置单元格的值、样式、字体、颜色、对齐方式等,并且支持插入图表、图片等复杂元素。 3. **公式处理**:POI支持Excel的公式...
在本项目中,我们主要探讨如何使用Java技术栈,特别是SpringBoot框架,来生成包含二维码的Excel文件。这个压缩包提供了必要的代码示例,包括`qrcode.java`、`MatrixToImageWriter.java`和`LogoConfig.java`三个关键...
这个"poi读写office文件样例程序"提供了一系列的源代码示例,帮助开发者理解和实现对这些文件的读取和写入操作。下面将详细介绍其中涉及的关键知识点。 1. **Apache POI 框架** Apache POI 是Apache软件基金会的一...
在Java编程中,Apache POI库是一个非常实用的工具,它允许开发者读写Microsoft Office格式的文件,如Word(.doc或.docx)、Excel(.xls或.xlsx)和PowerPoint(.ppt或.pptx)。本篇文章将深入探讨如何利用POI库在...
"poi操作Excel文件jar包"指的是包含Apache POI库的Java归档(JAR)文件,可以集成到Java项目中以实现Excel文件的处理功能。 1. **Apache POI 简介** Apache POI 是Apache软件基金会的一个顶级项目,最初由Markus ...
关于压缩包中的"poi读写word模板包",可能包含了一些示例代码或模板文件,帮助开发者理解如何使用Apache POI进行Word模板的读写。解压后,你可以查看这些文件来学习具体实现,包括如何查找和替换模板中的特定字符串...