Poi 导出excel单个sheet的内容

目录

Poi 导出excel单个sheet的内容

代码:

Contrller

Service:

导出引用:ExcelExportUtil

导出类:PoiSingleExcelExporter

测试用postman:

结果:

总结:


学习了带复杂表头的处理,如何导出简单表头单个sheet内容呢? 这边就少了表头的合并的内容,大致内容是差不多的

直接上代码:

代码:

Contrller

@RestController
@RequestMapping("/excel")
@Slf4j
public class ExcelController {@Resourceprivate ExcelService excelService;@GetMapping("/exportSingleData")@ApiOperation(value="导出数据接口")public void exportSingleData(HttpServletResponse response) {excelService.exportSingleData(response);}
}

Service:

@Service
public class ExcelService {public void exportSingleData(HttpServletResponse response) {String tableName = "order single " + LocalDate.now().getYear() + "-" + LocalDate.now().getMonthValue() + "-"+ LocalDate.now().getDayOfMonth();// 获取需要导出的数据List<Map<String, Object>> dataList = getResultData();// 需要展示的列List<String> fieldList = Lists.newArrayList("orderTime","total","except","overTime","successRate");// 匹配数据List<List<String>> results = matchFieldData(dataList, fieldList);// 设置表题List<String> titleList = Lists.newArrayList("日期","订单总量","异常量","超时量","成功率");try {ExcelExportUtil. exportSingleExcel(tableName, titleList, results,response);} catch (Exception e) {e.printStackTrace();}}private List<Map<String, Object>> getResultData(){String data = "[{\"orderTime\":\"2021-03-03 10:10:10\",\"total\":55,\"except\":12,\"overTime\":8,\"timelyRate\":\"88%\",\"successRate\":\"77%\"},{\"orderTime\":\"2021-03-03 10:15:10\",\"total\":155,\"except\":44,\"overTime\":20,\"timelyRate\":\"78%\",\"successRate\":\"65%\"},{\"orderTime\":\"2021-03-03 10:20:10\",\"total\":85,\"except\":6,\"overTime\":5,\"timelyRate\":\"98%\",\"successRate\":\"97%\"}]";return GsonUtils.changeJsonToList(data);}private List<List<String>> matchFieldData(List<Map<String, Object>> dataList, List<String> fieldList) {return ListUtils.emptyIfNull(dataList).stream().filter(Objects::nonNull).map(e -> ListUtils.emptyIfNull(fieldList).stream().map(f -> MapUtils.getString(e, f)).collect(Collectors.toList())).collect(Collectors.toList());}}

GsonUtils 引用 看字符串转化为list​​​​​​​

导出引用:ExcelExportUtil

@Component
public class ExcelExportUtil {private static Logger LOGGER = LoggerFactory.getLogger(ExcelExportUtil.class);/*** 单页导出* @param fileName  文件名* @param titles    标题* @param result    内容,每个List<String>表示一行数据,List中数据的顺序要与标题一致,* @param response*/public static void exportSingleExcel(String fileName, List<String> titles, List<List<String>> result,HttpServletResponse response) {try {fileName = URLEncoder.encode(fileName, "UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + fileName);new PoiSingleExcelExporter().export( fileName, titles, result,response);} catch (Exception e) {LOGGER.error(e.getMessage());}}
}

导出类:PoiSingleExcelExporter

import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;public class PoiSingleExcelExporter {PoiSingleExcelExporter() {}/*单个sheet页*/public void export( String fileName, List<String> titleList,List<List<String>> contentList,HttpServletResponse response) {HSSFSheet sheet;try (HSSFWorkbook workbook = new HSSFWorkbook(); OutputStream output = response.getOutputStream()) {setResponse(response, fileName);sheet = workbook.createSheet("Sheet1");int rowNum = 0; // 行号,要一行一行设置内容createHeader(workbook, sheet, titleList, rowNum);rowNum++;createContent(sheet, contentList, rowNum);workbook.write(output);output.flush();} catch (Exception e) {e.printStackTrace();}}private void createHeader(HSSFWorkbook workbook, HSSFSheet sheet, List<String> titles, int rowNum) {setHeaderStyle(workbook);setSheetContent(sheet, titles, rowNum);}private static void setSheetContent(HSSFSheet sheet, List<String> contentList, int rownum) {HSSFRow row = sheet.createRow(rownum);AtomicInteger i = new AtomicInteger();for (String title : ListUtils.emptyIfNull(contentList)) {if (!StringUtils.isEmpty(title)) {HSSFCell cell = row.createCell(i.getAndIncrement());cell.setCellValue(title);}}}private void createContent(HSSFSheet sheet, List<List<String>> content, int rownum) throws Exception {for (List<String> lineData : content) {setSheetContent(sheet,lineData,rownum);rownum++;}}private void setResponse(HttpServletResponse response, String fileName) {response.reset();response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", getResponseHeader(fileName));}private String getResponseHeader(String fileName) {return "attachment; filename=" + gbToUtf8(fileName) + ".xls";}private static String gbToUtf8(String src) {byte[] b = src.getBytes();char[] c = new char[b.length];for (int x = 0; x < b.length; x++) {c[x] = (char) (b[x] & 0x00FF);}return new String(c);}private static void setHeaderStyle(HSSFWorkbook workbook) {CellStyle style = workbook.createCellStyle();//设置样式Font font = workbook.createFont();font.setFontHeightInPoints((short) 13);//设置字体大小font.setBold(true);//字体加粗style.setFont(font);//设置的字体style.setBorderTop(BorderStyle.DASHED);//上边框style.setBorderBottom(BorderStyle.DASHED); //下边框style.setBorderBottom(BorderStyle.DASHED);//左边框style.setRightBorderColor(IndexedColors.BLACK.getIndex());//右边框颜色style.setTopBorderColor(IndexedColors.BLACK.getIndex());//上边框颜色style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); //下边框颜色style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); //左边框颜色style.setBorderBottom(BorderStyle.DASHED);//右边框style.setAlignment(HorizontalAlignment.LEFT);//设置水平对齐的样式为居中对齐style.setVerticalAlignment(VerticalAlignment.CENTER);//设置垂直对齐的样式为居中对齐}}

测试用postman:

结果:

总结:

导出内容,还是一行一行处理,先处理表题的内容,然后处理内容。多个sheet的时候怎么处理呢?

Poi 导出excel单个sheet的内容相关推荐

  1. Poi 导出excel多个sheet的内容

    Poi 导出excel多个sheet的内容 目录 Poi 导出excel多个sheet的内容 代码: Contrller Service: 导出引用:ExcelExportUtil 导出类:PoiMu ...

  2. java输出excel 异常处理_使用poi导出Excel,并设定单元格内容类型,抛出异常

    本例子使用的是HSSF,为Excel2003提供处理方案. 设定为输入类型为数值 import org.apache.poi.hssf.usermodel.DVConstraint; import o ...

  3. POI导出excel并设置单元格样式和单元格内容中文自适应

    本案例生产环境真是案例POI导出: 开发环境:idea+mybaits3+spring4+springmvc4+maven3+mysql5.7 poi依赖: <dependency>< ...

  4. Springboot整合Poi导出excel(简单版)

    一. 问题引入 博客专栏: Springboot整合Poi导出excel(简单版) Springboot整合Poi导出excel(注解版) 总所周知Springboot是一个功能强大的微服务框架,集成 ...

  5. POI导出Excel (满满的干货啊)

    已经实现的POI导出Excel 步骤一:导入依赖 <dependency><groupId>org.apache.poi</groupId><artifact ...

  6. Java操作poi导出Excel自定义字体颜色

    Java操作poi导出Excel自定义字体颜色 功能介绍 POI操作Excel 第一步创建一个导出的工具类 整体定义表格字体样式 自定义表格字体样式 总结 功能介绍 Apache POI 是用Java ...

  7. Springboot整合Poi导出excel(注解版)

    简介 博客专栏: Springboot整合Poi导出excel(简单版) Springboot整合Poi导出excel(注解版) 上文提到通过poi简单导出Excel后,很多读者反应需要解决导出自适应 ...

  8. cpu java poi 导出_java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通 ...

  9. Java POI 导出EXCEL经典实现 Java导出Excel

    转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...

最新文章

  1. 【IM】关于集成学习Bagging和Boosting的理解
  2. 优秀程序员写代码一定会用的 11 条经验
  3. python求corr_Python dataframe 算相关系数用corr(),算不出结果
  4. python爬虫教程(一)
  5. 国家发钱了!研究生补贴一览表!
  6. diff patch制作补丁打补丁
  7. 基于 DataLakeAnalytics 做跨地域的数据分析 1
  8. shell之什么时候使用shell以及最简单的shell程序
  9. MSTP:多生成树实例——应用案列及配置命令(实验)
  10. index.php后有乱码后缀,phpExcel在线下wamp环境下,正常导出,同样的代码到线上Linux导出文件无法打开,修改文件后缀为.xls后乱码...
  11. proe输入数字时成双出现_什么是隔离数字输入?
  12. [转载] 比较器(Comparable和Comparator)、自然排序、定制排序
  13. Android手柄数据全解析
  14. 【Python百日基础系列】Day73 - dash实例:系统发育树
  15. 哥德巴赫猜想(python)
  16. LaTex 之 数学运算符号
  17. 1. 有1,2,3,4个数字, 能组成多少个互不相同且无重复数字的三位数? 都是多少?
  18. 通过 Nginx 实现多机负载均衡
  19. 基于NodeJs的爬虫
  20. BQ76930 DSG CHG 不能输出高电平解决方法

热门文章

  1. 建网站需要哪些费用?(软件方面)
  2. 计算机游戏有哪些基本特征,计算机玩游戏有哪些重要要求? ?
  3. 概率论基础 - 9 - 中心极限定理
  4. 计算机基础实验指导第3版答案,计算机基础实验指导(第3版)
  5. pytorch实战(四)——模型的保存与读取
  6. 八一钢铁:宝钢入主,中报业绩大幅增长
  7. silverlight系列(Grid、Border、Sharp、Brush)
  8. 数字经济背景下的多元化转型,电信运营商如何突围?
  9. 嵌入式驱动编写-点亮LED驱动程序
  10. django数据库报错Table 'xxx' doesn't exist或Unknown table 'xxx'