poi导出word表格详解

本文详细介绍了如何使用Java的Apache POI库来创建Word文档,并着重讲解了设置纸张大小、单元格列宽、字体样式、单元格对齐、单元格合并以及换行等关键操作。通过实例代码展示了从JS到Controller再到工具类的实现过程。
摘要由CSDN通过智能技术生成

一、效果如下

二、js代码

function export_word(){ //导出word
    var url = "czzsca/exportWord.do";
    this.export(url);
}
function export(url){
    var currentyear = $("#mainYear").val() * 1;
    var key_columns = ['xh',"d_name","d_unit","d_number","d_estimate","d_lastyear","jnjh","d_remarks","d_depart","d_executeunit"];
    var value_columns = ['序号','项目名称','单位','数量','总概算','至'+(currentyear-1)+'年完成',currentyear+'年计划','附注','责任部门','计划执行单位'];
    window.location.href= url+"?key_columns="+key_columns+"&value_columns="+value_columns+"&title="+currentyear+"年 更新改造计划 正式计划草案";
}

三、controller代码(controller代码比较长,主要是格式化每一行的数据,主要是往工具类里传List<List<String>>参数,泛型的List<String>是每一行,String是每一列)

	//导出word
	@RequestMapping("/exportWord.do")
	@ResponseBody
	public ReturnMsg exportWord(String[] key_columns,String[] value_columns,String title,HttpServletResponse response){
		ReturnMsg rm = new ReturnMsg();
		try {
			response.setCharacterEncoding("UTF-8");
	        response.setContentType("application/msexcle");   
	        response.setHeader("content-disposition", "attachment;filename="+new String("正式计划草案".getBytes("gb2312"),"ISO8859-1")+".doc");
	        List<List<String>> content = new ArrayList<List<String>>();
	        List<List<String>> head = new ArrayList<List<String>>();
	        String jnjhzh = new BigDecimal(this.map.get("jnjhzh")==null||"".equals(this.map.get("jnjhzh")+"")?"0":this.map.get("jnjhzh")+"").setScale(1, RoundingMode.UP)+"";
	        String trimpro = new BigDecimal(this.map.get("tzjh")==null||"".equals(this.map.get("tzjh")+"")?"0":this.map.get("tzjh")+"").setScale(1, RoundingMode.UP)+"";
	        String temp = new BigDecimal(trimpro).subtract(new BigDecimal(jnjhzh))+"";
	        if("0".equals(temp)) {
	        	temp = "";
	        }
	        head = ExportUtil.getCzzscaList(jnjhzh, trimpro, temp);
	        Map dounit = new HashMap();
	        dounit.put("dwlx", 0);
	        dounit.put("user_type", 1);
            List<Map> d_executeunit = unitDao.selectByPrimaryKey(dounit);
            Map zrbm = new HashMap();
            zrbm.put("dwlx", 1);
            zrbm.put("user_type", 1);
            List<Map> d_zrbm = unitDao.selectByPrimaryKey(zrbm);
            List<Map> zmtype = nd_caController.findProType("2-3-4");
        	for (Map map: this.list) {
            	List<String> row = new ArrayList<String>();
            	for (int i = 0; i < key_columns.length; i++) {
            		System.out.print(map.get(key_columns[i])+",");
            		Object Otzjh = map.get("tzjh")!=null?map.get("tzjh"):0;
            		Object Ojnjh = map.get("jnjh")!=null?map.get("jnjh"):0;
            		BigDecimal tzjh = null;
            		BigDecimal jnjh = null;
            		if ("tzjh".equals(key_columns[i])||"jnjh".equals(key_columns[i])||"d_lnorde".equals(key_columns[i])) {
            			if(Otzjh instanceof BigDecimal) {
                			tzjh = (BigDecimal)Otzjh;
                		}else {
    						tzjh = new BigDecimal(Otzjh+"");
    					}
                		if(Ojnjh instanceof BigDecimal) {
                			jnjh = (BigDecimal)Ojnjh;
                		}else {
                			jnjh = new BigDecimal(Ojnjh+"");
    					}
                		
            		}
            		if ("d_lnorde".equals(key_columns[i])) {
            			if(map.get("flag")!=null&&"2".equals((map.get
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值