POI导出EXCEL实现

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) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值