java中自定义excel模板并且填充内容

场景

读取某一份固定的excel模板,根据数据填充进入指定的位置

本地测试时,在本地resources下创建一个存放模板的位置

例:

实现

挺简单的就直接贴代码吧,不得不吐槽一下博客园的编辑器真的很难用..

@Override

public void exportDeposit(UserInfo userInfo, Long id, HttpServletRequest request, HttpServletResponse response) throws Exception {

/*

业务内容

*/

// excel模板路径(分别是本地测试路径和云上服务器路径)

String file = this.getClass().getClassLoader().getResource("excel/zhck.xls").getFile();

// String file = "/usr/local/wms_trade/zhck.xls";

File fi = new File(file);

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));

// 读取excel模板

HSSFWorkbook wb = new HSSFWorkbook(fs);

// 读取了模板内所有sheet内容

HSSFSheet sheet = wb.getSheetAt(0);

sheet.setForceFormulaRecalculation(true);

// 在相应的单元格进行赋值

// 第11行 第6列,这是部分业务内容,其实和本文关系不大,但是可以用来给需要的人参考,内容是如何填入的,不过我更加建议去参考原生api

sheet.getRow(3).getCell(3).setCellValue(deposit.getType());

if (deposit.getGmtDeposit() != null) {

sheet.getRow(3).getCell(1).setCellValue(deposit.getGmtDeposit().toString());

}

sheet.getRow(3).getCell(5).setCellValue(deposit.getDepositNumber());

sheet.getRow(3).getCell(7).setCellValue(deposit.getCreateName());

sheet.getRow(4).getCell(1).setCellValue(deposit.getDestination());

/*

业务内容

*/

// 浏览器打开下载窗口

String fileName = deposit.getDepositNumber() + "出库单.xls";

response.reset();

response.setCharacterEncoding("UTF-8");

// Content-disposition 浏览器以下载的形式打开

String header = request.getHeader("User-Agent").toUpperCase();

if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {

fileName = URLEncoder.encode(fileName, "utf-8");

fileName = fileName.replace("+", "%20");

} else {

fileName = new String(fileName.getBytes(), "ISO8859-1");

}

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

response.setContentType("application/vnd.ms-excel");

// 直接用数组缓冲输出流输出

wb.write(response.getOutputStream());

}

留言

注释里写的挺明白的我个人觉得,只要看完应该就可以操作了,

具体的如何填充内容可以直接去搜索HSSFWorkbook,HSSFSheet,HSSFCellStyle,HSSFFont,HSSFRow,HSSFCell等API,

看过一轮就知道怎么使用了,上面也有部分例子可以参考

这个接口写完以后,已经可以直接用url访问下载文件了,剩下的就得交给前端了(那块我就不是很懂了)

如果挂在云服务器上的话,需要将模板也传一份到自己制定的目录,然后将文件路径更改一下,才能使用

比如:

有更好的办法欢迎留言

java中自定义excel模板并且填充内容 相关文章

Java-Apache Commons Jexl3-动态表达式判断

!-- https://mvnrepository.com/artifact/org.apache.commons/commons-jexl3 -- dependency groupIdorg.apache.commons/groupId artifactIdcommons-jexl3/artifactId version3.1/version /dependency /** * Jexl表达式计算 */ @Test public void jexlUseFun(

【Java】String字符串格式化

一、前言 String.format() 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", "John"); ,下面将笔记整理并记录下来。 其实各个语言的字符串格式化方法都是相通的,你可以在其中找到你熟悉的语言

学习JAVA 的markdown第一天

Markdown学习 标题 +回车一级标题:##+回车二级标题:###+空格二级标题(最多二级标题 字体 Hellow,World!粗体 Hellow,World! 两边加两个星号+空格 Hellow,World!斜体 Hellow,World! 两边加一个星号+空格 Hellow,World斜体+加粗 Hellow,World! 两

javascript解决小数的加减乘除精度丢失的方案

原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况. javascript(js)的小数点加减乘除问题,是一个js的bug如0.3*1 = 0.2999999999等,下面列出可以完美求出相应精度的四种js算法 123456789101112131

Java 从0到Hello world

首先来看看这三个词:JDK、JRE、JVM JDK : Java Development Kit java开发者工具 包括JRE和JVM JRE : Java Runtime Environment java运行时环境 包含JVM JVM : Java Virtue Machine java虚拟机 卸载JDK(方便后来使用) 删除Java的安装目录 此电脑属性--高

Java操作MongoDB采用MongoRepository仓库进行条件查询

MongoDB与spring集成,操作mongo非常方便 主要有两种方式: 一、使用MongoTemplate 二、使用Spring Data Mongodb的MongoRepository 两者的区别就是第一种得自己写CURD语句,第二种非常方便基本不用自己写CURD语句 我之前一直使用的都是MongoTemplate,这次就

关于JVM

Java Virtual Machine JVM特性 平台无关性 Java虚拟机是实现Java平台无关性的关键,引入JVM后,Java语言在不同平台上运行时不需要重新编译。JVM在执行字节码时,把字节码解释成具体平台上的机器指令执行。 JVM的位置 JVM的体系结构 栈、本地方法栈、程序计数

JAVA 从一个List中匹配另一个List的值并返回一个List

ListLookupValuesVO valuesVOList =new ArrayList(); LookupValuesVO a1=new LookupValuesVO(); a1.setLookupCode("CNY"); a1.setMeaning("人民币CNY"); valuesVOList.add(a1); LookupValuesVO a2=new LookupValuesVO(); a2.setLookupCode("EUR"); a2.setMea

你真的了解数据在堆栈中的存储方式吗

JavaScript数据类型分为: 分类 类型 原始数据类型(7种) Number、String、Boolean、Null、Undefined、Symbol、BigInt 引用数据类型 Object 先看两段代码 let num = 1;let data = num;data = 2;console.log('num : ' + num);//num : 1 let obj = { name : '

java返回json格式数据

返回String类型的数据 页面代码 !-- jQuery导入 --script src="js/jquery-2.1.0.min.js"/scriptscript type="text/javascript" $(function() {//失去焦点事件$("#username").blur(function() {//获取用户名的输入var username = $("#username").val();//cons

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐