EasyPoi Excel导出

  1. Excel模板的创建
  • 模板支持的语法

1)        空格分割

2)        三目运算 {{test ? obj:obj2}}

3)        n: 表示 这个cell是数值类型 {{n:}}

n  用来处理数字问题,防止上面有小叹号

4)        le: 代表长度{{le:()}}在if/else 运用{{le:() > 8 ? obj1 : obj2}}

5)        fd: 格式化时间{{fd:(obj;yyyy-MM-dd)}}

n  使用java的时间格式化,进行格式化处理

6)        fn: 格式化数字{{fn:(obj;###.00)}}

n  处理小数点问题

7)        单引号表示常量值 '' 比如'1' 那么输出的就是 1

8)        fe: 遍历数据,创建row

9)        !fe: 遍历数据不创建row

10)    $fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入

11)    #fe: 行遍历

n  其他都是列遍历,这个是横向遍历

12)    !if: 删除当前列{{!if:(test)}}

13)    &NULL& 控制

14)    ]] 换行符

n  解决多行遍历的问题,详情看下嘛的遍历标签

模板如下:

2.读取模板

/**
	 * 获取模板文件名称
	 * 
	 * @param templatePath
	 * @return
	 * @author: wl
	 * @Createtime: 2017年3月24日 下午2:09:23
	 */
	public static String getexcelName(String templatePath) {
		if (templatePath != null) {
			templatePath = templatePath.substring(templatePath.lastIndexOf("/") + 1, templatePath.lastIndexOf("."));
		}
		return templatePath;
	}
/**
	 * **表一、**表二模板导出excel和html(传参判断是否导出html)
	 * 
	 * @param list
	 *            循环填充的数据
	 * @param titleInfo
	 *            单个填充的数据
	 * @param templatePath
	 *            excel模板地址
	 * @param excelName
	 *            生成的excel文件名称
	 * @param isToHtml
	 *            是否生成html文件
	 * @return
	 * @author: wl
	 * @Createtime: 2017年3月22日 下午4:20:08
	 */
	public static String exportExcelCommon(List list, List listTwo, TitleInfoEntity titleInfo, String templatePath, String outPutPath, String batchId, boolean isToHtml) {
		// 读取模板
		TemplateExportParams params = new TemplateExportParams(templatePath);
		String excelName = "";
		excelName = getexcelName(templatePath, batchId);

		// 设置sheet名称
		params.setSheetName(excelName);
		excelName += batchId;
		// 创建存放数据容器
		Map<String, Object> map = new HashMap<String, Object>();
		// 整理 单个填充的数据 放入容器
		if (titleInfo == null) {
			titleInfo = new TitleInfoEntity();
		}
		//将对象转化称JSON字符串,Stirng null转为空字符串
		String json = JsonUtil.ObjectToJsonStringNulltoChart(titleInfo);
		//json字符串转化称对象
		Map title = JsonUtil.jsonParseObject(json, Map.class);
		map.putAll(title);
		// 整理 循环填充的数据 放入容器
		map.put("list", list);
		if (listTwo != null)
			map.put("listtow", listTwo);
		// 创建Workbook
		Workbook workbook = ExcelExportUtil.exportExcel(params, map);
		// 读取输出文件夹
		File savefile = new File(outPutPath);
		if (!savefile.exists()) {
			savefile.mkdirs();
		}
		FileOutputStream fos = null;
		// 创建excel文件
		try {
			fos = new FileOutputStream(outPutPath + "/" + excelName + ".xls");
			workbook.write(fos);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				workbook.close();
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		// 创建html文件
		if (isToHtml) {
			XLSUtils.toHtml(new File(outPutPath + "/" + excelName + ".xls"), new File(outPutPath + "/" + excelName + ".html"));
		}
		list = null;
		map = null;
		listTwo = null;
		System.gc();
		return excelName + ".html";
	}
  1. Excel的下载
function exportxls(){
		//获取event对象
		var evt = window.event || arguments.callee.caller.arguments[0];
		if (document.all) {
			evt.returnValue = false;
	        } else {
	        //阻止默认的事件
	        	evt.preventDefault();
	        };
	        //获取session中的对象的属性
	        var id='${sessionScope.admin.userid }'
		window.open('URL'+id.toString()+'.xls','newwindow');
	}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
EasyPoi是一款基于POI封装的Java Excel工具类库,它提供了丰富的功能和易用性的API,可以帮助我们快速、方便地实现Excel的读写操作。 如果要使用EasyPoi实现多Sheet导出,可以按照以下步骤进行: 1. 定义数据模型类,用于存储每个Sheet的数据。 2. 在Controller创建Workbook对象,用于生成Excel文件。 3. 调用EasyPoi提供的API,将数据填充到Workbook对象的每个Sheet。 4. 将Workbook对象写入到输出流,即可实现Excel文件的导出。 下面是一个简单的示例代码: ```java // 定义数据模型类 public class User { private String name; private int age; // getter和setter方法... } // 在Controller创建Workbook对象 @RequestMapping("/export") public void export(HttpServletResponse response) { Workbook workbook = new HSSFWorkbook(); // 创建Sheet1并填充数据 List<User> userList1 = userService.getUserList1(); Sheet sheet1 = workbook.createSheet("Sheet1"); // 向Sheet1填充数据 // ... // 创建Sheet2并填充数据 List<User> userList2 = userService.getUserList2(); Sheet sheet2 = workbook.createSheet("Sheet2"); // 向Sheet2填充数据 // ... // 将Workbook对象写入输出流 response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=export.xls"); response.flushBuffer(); workbook.write(response.getOutputStream()); } ``` 在上面的示例,我们通过调用Workbook对象的createSheet方法创建了两个Sheet,并向每个Sheet填充了一些数据。最后,我们将Workbook对象写入到输出流,实现Excel文件的导出。 需要注意的是,如果要使用EasyPoi实现多Sheet导出,需要使用HSSFWorkbook类来创建Workbook对象,因为XSSFWorkbook类不支持多Sheet导出。如果需要导出大量数据,可以考虑使用SXSSFWorkbook类,它可以在内存缓存数据,避免内存溢出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值