使用POI生成Excel

注意:本分非转载文章,只是为了不让在首页推荐,特地进行此设置。


 

通常需要让用户导出Excel的模板,一般可以先把模板保存到服务器,让用用户下载,对于不常变化的模板,还可以直接使用POI进行生成,下面就是如何使用POI生成。

1、对于表头,首先可以编写一个List,保存Excel模板的表头信息,如下:
/**
	 * @说明 返回费用明细的表头字段
	 * @return
	 */
	public static List getCostDetailList(){
		List list = new ArrayList();
		list.add("CO对象名称");
		list.add("订单号");
		list.add("确定名称");
		list.add("大区");
		list.add("分公司");
		list.add("成本要素名称");
		list.add("确定成本要素");
		list.add("费用类型");
		list.add("CO范围货币值");
		list.add("名称");
		list.add("月份");
		list.add("过帐日期");
		list.add("参考凭证编号");
		list.add("物料描述");
		list.add("成本要素");
		return list;
	}

2、然后使用POI生成Excel文件对象:
/**
	 * 返回导入模板 费用报表
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public HSSFWorkbook excelModelFybb(String type){
		// 建立新HSSFWorkbook对象.
		HSSFWorkbook wb = new HSSFWorkbook();

		// 建立新的sheet对象.
		HSSFSheet sheet = wb.createSheet("ExcelModel");

		// 标头.
		HSSFRow row0 = sheet.createRow((short) 0);

		List list =new ArrayList();
		//不同的type对应不同的报表模板
		if(type.equals("1"))
			list = ExcelListUtil.getCostReportList();
		else if(type.equals("2"))
			list = ExcelListUtil.getCostDetailList();
		else if(type.equals("3"))
			list = ExcelListUtil.getInnerDinningList();
		else if(type.equals("4"))
			list = ExcelListUtil.getInnerLodgingList();
		else if(type.equals("5"))
			list = ExcelListUtil.getInnerSupperMarketList();
		else if(type.equals("6"))
			list = ExcelListUtil.getInnerTravelList();
		
		for(int i=0;i<list.size();i++){
			String title = list.get(i).toString();

			HSSFCell csCell00 = row0.createCell((short) i);
			// 设置cell编码解决中文高位字节截断.
			csCell00.setEncoding(HSSFCell.ENCODING_UTF_16);
			// 设置中西文结合字符串.
			csCell00.setCellValue(title);
		}

		return wb;
	}

3、然后在Action或Servlet中输出这个Excel文件就可以了:
public ActionForward modelDownload(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		salesReportImportManager = getSalesReportImportManager();
		String type	= request.getParameter("type");
		// 得到HSSFWorkbook对象
		HSSFWorkbook fileName = null;
		try {
			fileName = salesReportImportManager.excelModelFybb(type);//这是上面代码中的那个生成Excel的方法
			response.setHeader("Pragma", "");
			response.setHeader("Expires", "");
			response.setHeader("Cache-Control", "Private");
			// 开始EXCEL操作
			response.setContentType("APPLICATION/OCTET-STREAM");
			response.setHeader("Content-Disposition", "attachment; filename=\"ModelDownLoad.xls\"");
			// 初始化输出流
			OutputStream os = response.getOutputStream();
			// 生成Excel文件
			fileName.write(os);
			// 立即输出
			response.flushBuffer();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值