Apache的Jakata项目的POI子项目,目标是处理ole2对象。
POI可以到 http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 下载。 编译好的jar主要有这样4个:poi包,poi Browser包,poi hdf包,poi hssf例程包。实际运行时,需要有poi包就可以了。
HSSF提供给用户使用的对象在org.apache.poi.hssf.usermodel包中,主要部分包括Excell对象,样式和格式,还有辅助操作。有以下几种对象:
HSSFWorkbook excell的文档对象
HSSFSheet excell的表单
HSSFRow excell的行
HSSFCell excell的格子单元
HSSFFont excell字体
HSSFName 名称
HSSFDataFormat 日期格式
在poi1.7中才有以下2项:
HSSFHeader sheet头
HSSFFooter sheet尾
和这个样式
HSSFCellStyle cell样式
辅助操作包括
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
下面是一个简单的例子:
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.hfxt.common.Pager;
@Controller
@Scope("prototype")
@ParentPackage("struts-base")
@Namespace("/cstOrder")
public class OrderAction extends BaseAction {
private Pager<CstOrder> pager;
public Pager<CstOrder> getPager() {
return pager;
}
public void setPager(Pager<CstOrder> pager) {
this.pager = pager;
}
/*
* 生成Excel
*/
@SuppressWarnings("deprecation")
@Action(value="doCreateExcel",results={@Result(name="success",type="json",
params={"root","resultMap"})})
public String doCreateExcel(){
try {
if(pager==null){
pager = new Pager<CstOrder>();
}
pager = orderService.getCstOrdersByPager(pager.getCurrentPage(), pager.getPageSize(), order);
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("客户贡献分析");
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("编号");
cell.setCellStyle(style);
cell = row.createCell((short) 1);
cell.setCellValue("客户名称");
cell.setCellStyle(style);
cell = row.createCell((short) 2);
cell.setCellValue("订单金额");
cell.setCellStyle(style);
// 第五步,写入实体数据 实际应用中这些数据从数据库得到,
List<CstOrder> list = pager.getPageRecords();
for (int i = 0; i < list.size(); i++)
{
row = sheet.createRow((int) i + 1);
CstOrder order = (CstOrder) list.get(i);
// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue((double) order.getOrdId());
row.createCell((short) 1).setCellValue(order.getCstCustomer().getCustName());
row.createCell((short) 2).setCellValue( order.getOrdCapital());
}
// 第六步,将文件存到指定位置
File file = new File("E:/order.xls");
if(file.exists()){
file.delete();
}
FileOutputStream fout = new FileOutputStream("E:/order.xls");
wb.write(fout);
fout.close();
resultMap.put("retCode", RetCode.SUCCESS);
resultMap.put("msg", "生成Excel成功,存放的路径E:/order.xls");
} catch (Exception e) {
e.printStackTrace();
log.info("doCreateExcel bug:{}",e);
resultMap.put("retCode", RetCode.FAIL);
resultMap.put("msg","生成Excel失败,请重试!");
}
return SUCCESS;
}
}
poi包下载(http://dl.vmall.com/c0hglfn8cp)
HSSF提供给用户使用的对象在org.apache.poi.hssf.usermodel包中,主要部分包括Excell对象,样式和格式,还有辅助操作。有以下几种对象:
HSSFWorkbook excell的文档对象
HSSFSheet excell的表单
HSSFRow excell的行
HSSFCell excell的格子单元
HSSFFont excell字体
HSSFName 名称
HSSFDataFormat 日期格式
在poi1.7中才有以下2项:
HSSFHeader sheet头
HSSFFooter sheet尾
和这个样式
HSSFCellStyle cell样式
辅助操作包括
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
下面是一个简单的例子:
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.hfxt.common.Pager;
@Controller
@Scope("prototype")
@ParentPackage("struts-base")
@Namespace("/cstOrder")
public class OrderAction extends BaseAction {
private Pager<CstOrder> pager;
public Pager<CstOrder> getPager() {
return pager;
}
public void setPager(Pager<CstOrder> pager) {
this.pager = pager;
}
/*
* 生成Excel
*/
@SuppressWarnings("deprecation")
@Action(value="doCreateExcel",results={@Result(name="success",type="json",
params={"root","resultMap"})})
public String doCreateExcel(){
try {
if(pager==null){
pager = new Pager<CstOrder>();
}
pager = orderService.getCstOrdersByPager(pager.getCurrentPage(), pager.getPageSize(), order);
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("客户贡献分析");
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("编号");
cell.setCellStyle(style);
cell = row.createCell((short) 1);
cell.setCellValue("客户名称");
cell.setCellStyle(style);
cell = row.createCell((short) 2);
cell.setCellValue("订单金额");
cell.setCellStyle(style);
// 第五步,写入实体数据 实际应用中这些数据从数据库得到,
List<CstOrder> list = pager.getPageRecords();
for (int i = 0; i < list.size(); i++)
{
row = sheet.createRow((int) i + 1);
CstOrder order = (CstOrder) list.get(i);
// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue((double) order.getOrdId());
row.createCell((short) 1).setCellValue(order.getCstCustomer().getCustName());
row.createCell((short) 2).setCellValue( order.getOrdCapital());
}
// 第六步,将文件存到指定位置
File file = new File("E:/order.xls");
if(file.exists()){
file.delete();
}
FileOutputStream fout = new FileOutputStream("E:/order.xls");
wb.write(fout);
fout.close();
resultMap.put("retCode", RetCode.SUCCESS);
resultMap.put("msg", "生成Excel成功,存放的路径E:/order.xls");
} catch (Exception e) {
e.printStackTrace();
log.info("doCreateExcel bug:{}",e);
resultMap.put("retCode", RetCode.FAIL);
resultMap.put("msg","生成Excel失败,请重试!");
}
return SUCCESS;
}
}
poi包下载(http://dl.vmall.com/c0hglfn8cp)