Java net.sf.jxls 生成模板 并导出excel
如果是 maven项目需要引入下面这个就可以
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.3</version>
</dependency>
- 首先应该先把模板格式定好。
- 将数据传输过去
- 遍历数据,之后再深层嵌套遍历
直接上代码
/**
* 导出采购订单
*/
@RequiresPermissions("tool:gen:code")
@BussinessLog(title = "导出采购订单", businessType = BusinessType.GENCODE)
@GetMapping("/exportToProveExcel/{id}")
public void exportToProveExcel(HttpServletResponse response,@PathVariable("id") String id) throws IOException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String modelsPath = Global.getTemplatePath();
PurchaseBillsEntity billsEntity = purchaseBillsService.findPurchaseBillsById(id);
billsEntity.setPurInvs(purchaseInvsService.findPurchaseInvsByBillId(id));
Map<String, PurchaseBillsEntity> beans = Maps.newHashMap();
String sDate=sdf.format(billsEntity.getPurTime());
billsEntity.setPurTime1(sDate);
billsEntity.setExcelDetails(purchaseBillsService.collateSpecialty(billsEntity.getPurInvs()));
beans.put("purchase", billsEntity);
XLSTransformer transformer = new XLSTransformer();
String xlsTemplateFileName = modelsPath+"/purchaseTemplate.xls";
String outputFileName = "purchase-" + sdf.format(new Date()) + ".xls";
InputStream in=null;
OutputStream out=null;
//设置响应
response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);
response.setContentType("application/vnd.ms-excel");
try {
in=new BufferedInputStream(new FileInputStream(xlsTemplateFileName));
Workbook workbook=transformer.transformXLS(in, beans);
out=response.getOutputStream();
//将内容写入输出流并把缓存的内容全部发出去
workbook.write(out);
out.flush();
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in!=null){try {in.close();} catch (IOException e) {}}
if (out!=null){try {out.close();} catch (IOException e) {}}
}
}
@TableField(exist = false)
private List<ExcelPlanDetailsEntity> excelDetails;
@Data
public class ExcelPlanDetailsEntity implements Serializable {
private String specialty;
private List<PurchaseInvsEntity> invsEntityList; //这里直接用的是嵌套循环(每一个专业对应多个个物料)
}
下面模板会显示出来
前段点击链接 跳转的方式进行链接
function getFilePath(id) {
location.href =baseURL + "pos/purchaseBills/exportToProveExcel/"+id;
opt.modal.msg('执行成功,正在生成采购订单请稍后…');
}
Java net.sf.jxls 生成模板 并导出excel的更多相关文章
- vue Excel导入,下载Excel模板,导出Excel
vue Excel导入,下载Excel模板,导出Excel vue Excel导入,下载Excel模板 <template> <div style="display: ...
- NPOI根据模板生成chart图表导出Excel
导入NPOI的全部dll. 因为NPOI的API里面还没有对于Chart图表方面的操作,所以只能根据提示做好的图表作为模板,修改数据源的方法来改变图表. 注意:NPOI要用2003版以下的excel才 ...
- SSM poi通过模板 反射导出excel
1 import java.lang.reflect.Field; 2 import java.lang.reflect.Method; 3 import java.util.Iterator; 4 ...
- java 实现用户自由选择字段实现导出EXCEL表格
package com.thinkgem.jeesite.common.utils.excel; import java.io.File; import java.io.OutputStream; i ...
- java通过jxls框架实现导入导出excel
//使用jxls报表生成工具,把java实体类导出生成 Excel文件或导入 Excel 插入数据库 02 03//读取04 05public class ReadExcel {06 private ...
- 新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)
废话少说,不懂itext干啥用的直接去百度吧. ***************制作模板******************* 1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acr ...
- 尝试做一个.NET模板填充导出Excel工具
园友好,最近晚辈延续上篇后尝试进阶做成Excel模板填充数据生成工具 MiniExcel Template. 主要特点 同样以Stream流.延迟查询避免全部数据载入内存情况,做到1GB内存降低到只需 ...
- 根据模板导出Excel报表并生成多个Sheet页
因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为 根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...
- 根据模板导出Excel报表并复制模板生成多个Sheet页
因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为 根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...
- 数据导出Excel,动态列
今天碰到一个需求,要求将用户回答的问卷及问题导出Excel表格,问卷对应的问题数量不一致,需要动态添加列表头,简单记录. 要导出Excel需要添加poi.jar包 用户-问卷实体(固定列): pack ...
随机推荐
- JavaScript设计模式样例十 —— 组合模式
组合模式(Composite Pattern) 定义:又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.目的:将对象组合成树形结构以表示"部分-整体"的层次结构.场景:您 ...
- OpenTelemetry 实战:从零实现应用指标监控
前言 在上一篇文章:OpenTelemetry 实战:从零实现分布式链路追踪讲解了链路相关的实战,本次我们继续跟进如何使用 OpenTelemetry 集成 metrics 监控. 建议对指标监控不太 ...
- python pyqt6 QMainWindow 使用QComboBox 窗口移位
QMainWindow 可拖拽移动,但是点击QComboBox 时,窗口有时会误识别为拖拽移动,导致窗口自动移动位置 在QMainWindow中,新增事件筛选器 # 避免点击QComboBox时,窗 ...
- PicGo RequestError: Error: tunneling socket could not be established, cause=connect ECONNREFUSED 127.0.0.1:36677
PicGo RequestError: Error: tunneling socket could not be established, cause=connect ECONNREFUSED 127 ...
- SQL Server STRING_AGG
参考: How To Use STRING_AGG – Concat Multiple Row Values In SQL Server 如果你想做 string.join(',', collecti ...
- ASP.NET Core – Handle Error on Web API
前言 上一篇讲了 ASP.NET Core – Handle Error on Razor Page 这一篇继续说说 Web API 的错误处理. 主要参考 Handle errors in ASP. ...
- C# 开源浏览器性能提升,体验Chrome级速度
前言 使用 C# 和 CefSharp 开发的全功能网页浏览器. 项目介绍 SharpBrowser 是目前最快的开源 C# 网页浏览器! 采用了轻量级的 CEF 渲染器,在呈现网页时甚至比 Goog ...
- Project: Kill e
接到上级任务,今天来暗杀 \(e\) 据说杀死 \(e\) 的方式就是把他算出来,好吧,现在我们还是来算一下 考虑使用如下代数式求解 \[e\ \text{site:baidu.com} \] 虽然我 ...
- 三大硬核方式揭秘:Java如何与底层硬件和工业设备轻松通信!
大家好,我是V哥,程序员聊天真是三句不到离不开技术啊,这不前两天跟一个哥们吃饭,他是我好多年前的学员了,一直保持着联系,现在都李总了,在做工业互联网相关的项目,真是只要 Java 学得好,能干一辈子, ...
- 剪枝的应用,bfs判重 蚱蜢跳——蓝桥p642
**问题描述 总共有九个盘子,八只蚱蜢,且每个盘子中只能容下一只蚱蜢,蚱蜢的编号为1~8,如果蚱蜢所在的盘子紧邻着空盘子,那么该蚱蜢可以从自己的盘子跳到空盘子中,也可以隔一个盘子跳到空盘子中,问一开始 ...