java hutool工具类实现将数据下载到excel

2024-03-20 4592阅读

通过hutool工具类,对于excel的操作变得非常简单,上篇介绍的是excel的上传,对excel的操作,核心代码只有一行。本篇的excel的下载,核心数据也不超过两行,简洁方便,特别适合当下的低代码操作。

下载excel,有两种方式,一种将生成的excel下载到指定路径,一种是在web页面中直接下载到默认的download路径。

第一种:

ExcelWriter writer = ExcelUtil.getWriter("D:/myfile/" + new String("班级人员表.".getBytes(StandardCharsets.UTF_8)));

第二种:

ExcelWriter writer = ExcelUtil.getWriter();
write.flush(outputStream, isCloseOut);

使用步骤及代码示例如下:

引入jar包

 		
            cn.hutool
            hutool-poi
            5.7.16
        
        
            org.apache.poi
            poi-ooxml
            4.1.2
        

第一种指定路径下载的方式代码实现如下:

public class CreateExcelDemo{
	public void createExcel() {
		/**
		 * 第一部分,组装数据
		 */
		// classList 就是输入到excel的数据集合
		List classList = new ArrayList();
		// map的key 是表头,value是表头对应的值
		Map map = new LinkedHashMap();
		map.put("班级名称", "计算机一班");// 第一列
		map.put("班级人数", "45");// 第二列
		map.put("班主任", "王老师");
		classList.add(map);
		
		/**
		 * 第二部分,指定路径和excel文件名称,将数据放入excel
		 */
		 // 设置UTF-8,是为了防止在Linux中,中文名称出现乱码
		ExcelWriter writer = ExcelUtil.getWriter("D:/myfile/" + new String("班级人员表.xlsx".getBytes(StandardCharsets.UTF_8)))
		        .renameSheet("班级名称") //设置sheet名称,默认是第一个sheet 
                .setColumnWidth(-1, 20)  // 设置列宽度为20,-1表示针对所有列
                .write(classList, true); // 将List数据写入到excel表,true表示设置标题行
        writer.close(); // 写完记得关闭
	}
}

结果如下:

java hutool工具类实现将数据下载到excel 第1张

java hutool工具类实现将数据下载到excel 第2张

第二种是在web页面中下载,即直接通过浏览器下载,代码如下:

public class CreateExcelDemo {
    public static void createExcel(HttpServletResponse response) {
        /**
         * 第一部分,组装数据
         */
        // classList 就是输入到excel的数据集合
        List classList = new ArrayList();
        // map的key 是表头,value是表头对应的值
        Map map = new LinkedHashMap();
        map.put("班级名称", "计算机一班");// 第一列
        map.put("班级人数", "45");// 第二列
        map.put("班主任", "王老师");
        classList.add(map);
        /**
         * 第二部分,通过流输出到文件
         */
        OutputStream out = null;
        try (ExcelWriter writer = ExcelUtil.getWriter()) {
            writer.write(classList, true);// 写入数据
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("班级人员表.xlsx", "UTF-8"));
            out = response.getOutputStream();// 获取流
            writer.flush(out, true); // 将数据流输出到文件
        } catch (IOException e) {
            e.printStackTrace();
        }
        IoUtil.close(out);// 流的操作要关闭
    }

结果如下:

java hutool工具类实现将数据下载到excel 第3张

java hutool工具类实现将数据下载到excel 第4张

excel的操作是很方便的,其他设置可以查看源码,源码都是中文注释,很清晰。

excel表上传请看上一篇:java hutool工具实现excel的上传 支持office03和07


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]