相信在大部分的web项目中都会有导出导入Excel的需求,之前我也写过一篇导出单个sheet工作表的文章,没看过的小伙伴可以去看哈,链接也给大家放出来了:导出单个sheet
但是在我们日常的工作中,需求往往没这么简单,可能需要将数据按类型分类导出或者数据量过大,需要分多张表导出等等 。遇到类似的需求该怎么办呢,别慌,往下看 。
一、pom引用pom文件中,添加以下依赖
查看代码 <!--Excel工具--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> <scope>compile</scope> </dependency> 二、工具类util1.ExportSheetUtil
查看代码 package com.***.excel;import org.apache.poi.hssf.usermodel.*;import org.apache.poi.ss.usermodel.HorizontalAlignment;import org.apache.poi.ss.usermodel.VerticalAlignment;import org.springframework.http.MediaType;import javax.servlet.http.HttpServletResponse;import java.net.URLEncoder;import java.util.List;/** * @description: excel导出多个sheet工具类 * @author: *** * @date: 2022/9/15 */public class ExportSheetUtil { /** * 拆解并导出多重Excel */ public static void exportManySheetExcel(String fileName, List<ExcelSheet> mysheets, HttpServletResponse response) { //创建工作薄 HSSFWorkbook wb = new HSSFWorkbook(); //表头样式 HSSFCellStyle style = wb.createCellStyle(); // 垂直 style.setVerticalAlignment(VerticalAlignment.CENTER); // 水平 style.setAlignment(HorizontalAlignment.CENTER); //字体样式 HSSFFont fontStyle = wb.createFont(); fontStyle.setFontName("微软雅黑"); fontStyle.setFontHeightInPoints((short) 12); style.setFont(fontStyle); for (ExcelSheet excel : mysheets) { //新建一个sheet //获取该sheet名称 HSSFSheet sheet = wb.createSheet(excel.getFileName()); //获取sheet的标题名 String[] handers = excel.getHanders(); //第一个sheet的第一行为标题 HSSFRow rowFirst = sheet.createRow(0); //写标题 for (int i = 0; i < handers.length; i++) { //获取第一行的每个单元格 HSSFCell cell = rowFirst.createCell(i); //往单元格里写数据 cell.setCellValue(handers[i]); //加样式 cell.setCellStyle(style); //设置每列的列宽 sheet.setColumnWidth(i, 4000); } //写数据集 List<String[]> dataset = excel.getDataset(); for (int i = 0; i < dataset.size(); i++) { //获取该对象 String[] data = dataset.get(i); //创建数据行 HSSFRow row = sheet.createRow(i + 1); for (int j = 0; j < data.length; j++) { //设置对应单元格的值 row.createCell(j).setCellValue(data[j]); } } } // 下载文件谷歌文件名会乱码,用IE try { response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "utf-8")); response.setHeader("Cache-Control", "No-cache"); response.flushBuffer(); wb.write(response.getOutputStream()); wb.close(); } catch (Exception e) { e.printStackTrace(); } }}
经验总结扩展阅读
-
-
-
-
-
活了一把年纪了|婚礼上,我遇到了妻子以前的恩客,才知妻子之前的经历我该原谅吗
-
拉玛十世|情断慕尼黑,拉玛十世已逾半年未回德国有原因,他并非要改过自新
-
女神“不老女神”林志玲,46岁依然肤白貌美,她的养生秘籍终于公开了
-
-
每个人心里都有一个关于爱情的梦 频率相同的人,才是往后路上的最佳伴侣
-
属兔人2022年9月健康运势怎么样 属兔人2022年9月运势完整版
-
-
秦始皇|霍金去世前曾称“秦始皇还活着,只是走不出地宫”,这事是真的?
-
-
世界首个唾液孕检试剂盒即将上市 唾液孕检试剂盒怎么使用准确率高吗
-
发票自助领用机怎么用,自助发票机必须本人去买发票吗
-
-
何药师健康科普|长春胺和甲钴胺有什么区别?保护脑细胞和神经哪个更好?药师告诉您
-
-
美容 人人都能驾驭的5款短发造型,随手一拨都是气质感
-