码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • excel表导出


    dto:查询条件所在的类

    1. @GetMapping(value ="/downloadProject")
    2. @ApiOperation("导出台账数据")
    3. @AnonymousAccess
    4. public void queryDownload(Dto dto, HttpServletResponse response) throws IOException, ParseException {
    5. service.queryDownload(byPageDto, response);
    6. }

    service方法

    1. @Transactional
    2. public void queryDownload(Dto dto, HttpServletResponse response) throws IOException, ParseException {
    3. String tempPath = System.getProperty("java.io.tmpdir") + IdUtil.fastSimpleUUID() + ".xlsx";
    4. File file = new File(tempPath);
    5. MyExcelWriter writer = MyExcelWriter.getBigWriter();
    6. //重构字体格式等
    7. Font font = writer.createFont();
    8. font.setFontHeightInPoints((short) 15);
    9. font.setBold(true);
    10. CellStyle headCellStyle = writer.getHeadCellStyle();
    11. headCellStyle.setFont(font);
    12. //表头样式 参数:都是从0开始算 首行 尾行 首列 尾列 内容 是否使用样式
    13. writer.merge(32, "表名称");
    14. writer.merge(1, 3, 0, 0, "第一列", true);
    15. writer.merge(1, 3, 1, 1, "第二列", true);
    16. writer.merge(1, 3, 2, 2, "第三列", true);
    17. writer.merge(1, 3, 3, 3, "第四列", true);
    18. writer.merge(1, 1, 4, 8, "第五列", true);
    19. writer.merge(2, 3, 4, 4, "第六列", true);
    20. writer.merge(2, 3, 5, 5, "第七列", true);
    21. writer.merge(2, 3, 6, 6, "第八列", true);
    22. writer.merge(2, 3, 7, 7, "第九列", true);
    23. writer.merge(2, 3, 8, 8, "第十列", true);
    24. writer.merge(1, 1, 9, 13, "第十一列", true);
    25. writer.merge(2, 3, 9, 9, "第十二列", true);
    26. writer.merge(2, 3, 10, 10, "第十三列", true);
    27. writer.merge(2, 3, 11, 11, "第十四列", true);
    28. writer.merge(2, 3, 12, 12, "第十五列", true);
    29. writer.merge(2, 3, 13, 13, "第十六列", true);
    30. writer.merge(1, 3, 14, 14, "第十七列", true);
    31. writer.merge(1, 3, 15, 15, "第十八列", true);
    32. writer.merge(1, 3, 16, 16, "第十九列", true);
    33. writer.merge(1, 3, 17, 17, "第二十列", true);
    34. writer.merge(1, 1, 18, 19, "第二十一列", true);
    35. writer.merge(2, 3, 18, 18, "第二十二列", true);
    36. writer.merge(2, 3, 19, 19, "第二十三列", true);
    37. writer.merge(1, 1, 20, 26, "第二十四列", true);
    38. writer.merge(2, 3, 20, 20, "第二十五列", true);
    39. writer.merge(2, 3, 21, 21, "第二十六列", true);
    40. writer.merge(2, 3, 22, 22, "第二十七列", true);
    41. writer.merge(2, 2, 23, 26, "第二十八列", true);
    42. writer.writeCellValue(23, 3, "第二十九列"); //单个没法合并,用这种方法定义
    43. writer.writeCellValue(24, 3, "第三十列"); //单个没法合并,用这种方法定义
    44. writer.writeCellValue(25, 3, "第三十一列"); //单个没法合并,用这种方法定义
    45. writer.writeCellValue(26, 3, "第三十二列"); //单个没法合并,用这种方法定义
    46. writer.merge(1, 3, 27, 27, "第三十三列", true);
    47. writer.merge(1, 3, 28, 28, "第三十四列", true);
    48. writer.merge(1, 3, 29, 29, "第三十五列", true);
    49. writer.merge(1, 3, 30, 30, "第三十六列", true);
    50. writer.merge(1, 3, 31, 31, "第三十七列", true);
    51. writer.merge(1, 3, 32, 32, "第三十八列", true);
    52. //使用writeCellValue方法无法和merge一样传递参数true进行和表头同一样式,通过下面方法可以实现
    53. writer.getCell(23, 3).setCellStyle(headCellStyle);
    54. writer.getCell(24, 3).setCellStyle(headCellStyle);
    55. writer.getCell(25, 3).setCellStyle(headCellStyle);
    56. writer.getCell(26, 3).setCellStyle(headCellStyle);
    57. // 调整列宽
    58. writer.autoSizeColumnAll();
    59. Query query = getQuery(dto);
    60. List> resultList = query.getResultList();
    61. List> rows = new ArrayList<>();
    62. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    63. int i = 0; //显示在台账上的序号
    64. Integer j = 0; //判断是不是同一个number
    65. for (Map objectMap : resultList) {
    66. List list = new ArrayList<>();
    67. //例: list.add(objectMap.get("name") == null ? "" : objectMap.get("name").toString());
    68. list.add(i);
    69. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString().substring(0, 7));
    70. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    71. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    72. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    73. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    74. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    75. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    76. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    77. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    78. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    79. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    80. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    81. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    82. list.add(objectMap.get("字段名") == null ? "" : objectMap.get("字段名").toString());
    83. .
    84. .
    85. .
    86. .
    87. rows.add(list);
    88. }
    89. //数据从第几行开始渲染
    90. writer.setCurrentRow(4);
    91. writer.write(rows, false);
    92. response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
    93. response.setHeader("Content-Disposition", "attachment;filename=file.xlsx");
    94. ServletOutputStream out = response.getOutputStream();
    95. file.deleteOnExit();
    96. writer.flush(out, true);
    97. IoUtil.close(out);
    98. }
    99. 相关阅读:
      4.git本地仓库操作(操作命令)
      FFmpeg入门详解之18:视频基础概念
      Python: 一步之遥
      go 切片长度与容量的区别
      SELECT后面有自定义函数的优化方法
      njmon(nimon) + influxdb2 + grafana 系统性能监控
      基于梯度的黑盒迁移对抗攻击(附代码)
      基于Springboot的校园求职招聘系统(有报告)。Javaee项目,springboot项目。
      Android 开发技巧:音乐播放器的后台处理【Service、Handler、MediaPlayer】
      前端工程化精讲第五课 编码效率:如何提高编写代码的效率?
    100. 原文地址:https://blog.csdn.net/weixin_56777219/article/details/132754178
      • 最新文章
      • 攻防演习之三天拿下官网站群
        数据安全治理学习——前期安全规划和安全管理体系建设
        企业安全 | 企业内一次钓鱼演练准备过程
        内网渗透测试 | Kerberos协议及其部分攻击手法
        0day的产生 | 不懂代码的"代码审计"
        安装scrcpy-client模块av模块异常,环境问题解决方案
        leetcode hot100【LeetCode 279. 完全平方数】java实现
        OpenWrt下安装Mosquitto
        AnatoMask论文汇总
        【AI日记】24.11.01 LangChain、openai api和github copilot
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
      正则表达式工具 cron表达式工具 密码生成工具

      京公网安备 11010502049817号