当前位置: 首页 > article >正文

Excel模板下载\数据导出

pom

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>


<build>
	<resources>
        <resource><!--将xlsx打包到jar-->
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>**/*.xlsx</include>
            </includes>
        </resource>
        <resource><!--将除了xlsx以外的文件打包到jar-->
            <directory>src/main/resources</directory>
            <filtering>true</filtering><!--启用过滤器,使用pom.xml文件中<properties>标签定义的值替换${xxx}的值,如果没找到对应的<properties>属性,则${xxx}不会替换-->
            <excludes>
                <exclude>**/*.xlsx</exclude>
            </excludes>
        </resource>
    </resources>
    <!--添加resource配置可能导致src/main/java中的资源文件打包出现问题,解决思路见`日常随笔-springboot-SpringBoot解决mapper.xml存放在resources以外路径中的读取问题`-->
</build>

controller

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.ByteArrayOutputStream;


@RequestMapping(path = "/M/import/template", method = RequestMethod.GET)
@ApiOperation("下载导入模板")
@ApiImplicitParams({})
@ApiSecurity(accessType = ApiSecurity.AccessType.LOGIN)
public ResponseEntity<byte[]> exportBehaviorRecordExcelTemplate() throws MoralException {
    try {

        /** ============构造excel模板=========== **/

        Workbook wb = new XSSFWorkbook(Thread.currentThread().getContextClassLoader().getResourceAsStream("comment-import-template.xlsx"));//comment-import-template.xlsx文件放在src/main/resources中。

        //填数据
        Sheet sheetAt = wb.getSheetAt(0);
        //构造内容
        for (int i = 0;i < 10;i++) {
            Row row = sheetAt.createRow(i+1);
            row.createCell(0).setCellValue("第一列" + i);
            row.createCell(1).setCellValue("第二列" + i);
            row.createCell(2).setCellValue("第三列" + i);
        }
        //end
        
        ByteArrayOutputStream bOut = new ByteArrayOutputStream();
        wb.write(bOut);
        byte[] byteArray = bOut.toByteArray();

        /** ========转换成流下载========= **/
        BodyBuilder builder = ResponseEntity.ok();
        builder.contentLength(byteArray.length);
        builder.contentType(MediaType.APPLICATION_OCTET_STREAM);
        String filename = URLEncoder.encode("template.xlsx", "UTF-8");
        builder.header("Content-Disposition", "attachment; filename=" + filename);
        return builder.body(byteArray);

    } catch (Exception e) {
        throw new Exception("导出异常:" + e.getMessage());
    }
}

http://www.kler.cn/a/398651.html

相关文章:

  • Mac 电池没电关机导致时间不同步
  • 红外遥控信号解码
  • 基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
  • 麒麟V10,arm64,离线安装docker和docker-compose
  • 蓝桥杯备赛(持续更新)
  • 《AI 之影》
  • MySQL面试之底层架构与库表设计
  • 【iOS】知乎日报第四周总结
  • 智慧社区管理系统平台全面提升物业管理效率与用户体验
  • 拉取docker镜像应急方法
  • 论文《基于现实迷宫地形的电脑鼠设计》深度分析(四)——现实迷宫算法
  • css 布局学习之底部弹窗切换示
  • GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析
  • Stable Diffusion Web UI - Checkpoint、Lora、Hypernetworks
  • 【案例】---Hutool提取excel文档
  • Excel365和WPS中提取字符串的五种方法
  • git如何添加已被忽略的目录里的子目录
  • 海外媒体发稿:中东地区阿拉伯邮报Arab Post新闻媒体宣发
  • hadoop_capacity-scheduler.xml
  • 【go从零单排】Directories、Temporary Files and Directories目录和临时目录、临时文件
  • 应用于各种小家电的快充协议芯片
  • python 多进程,程序运行越来越慢踩坑
  • 【EmbeddedGUI】脏矩阵设计说明
  • Flink执行sql时报错
  • Flask个人网站博客系统(全)
  • 大语言模型通用能力排行榜(2024年10月8日更新)