java使用jxls导出Excel
jxls是基于POI的Excel模板导出导入框架。通过使用类似于jstl的标签,有效较少导出Excel的代码量。
1.pom
<!-- https://mvnrepository.com/artifact/net.sf.jxls/jxls-core -->
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.3</version>
</dependency>
2.模板样式

一般数据直接绑定跟 jstl比较像,直接${name}
循环就是 <jx:forEach items="${data}" var="item" varStatus="i" ></jx:forEach>
3.代码演示
@Test
public void method1() throws Exception {
// 循环数据
List<Object> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Map<String,Object> data = new HashMap<>();
data.put("a1", (int)(Math.random()*100) );
data.put("a2", (int)(Math.random()*100) );
data.put("a3", (int)(Math.random()*100) );
data.put("a4", (int)(Math.random()*100) );
data.put("a5", (int)(Math.random()*100) );
list.add(data);
}
// 表格使用的数据
Map map = new HashMap();
map.put("data",list);
map.put("title","java基于模板导出excel表格");
map.put("val","演示合并单元格的数据显示");
// 获取模板文件
InputStream is = this.getClass().getClassLoader().getResourceAsStream("x1.xls");
// 实例化 XLSTransformer 对象
XLSTransformer xlsTransformer = new XLSTransformer();
// 获取 Workbook ,传入 模板 和 数据
Workbook workbook = xlsTransformer.transformXLS(is,map);
// 写出文件
OutputStream os = new BufferedOutputStream(new FileOutputStream("D://temp.xls"));
// 输出
workbook.write(os);
// 关闭和刷新管道,不然可能会出现表格数据不齐,打不开之类的问题
is.close();
os.flush();
os.close();
}
4.导出效果

5.web环境下跑
web环境下跑和上面的代码基本上一样,不一样的就是 OutputStream 的地方换成了 response.getOutputStream()
然后 response 设置一下文件名, response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("报表.xls" ,"UTF-8"));
如果这一步不懂得可以参考我得另一篇文章:https://blog.csdn.net/yali_aini/article/details/81745883
代码:
import net.sf.jxls.transformer.XLSTransformer;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; @Controller
public class ReportController { @RequestMapping("/report")
public void report(HttpServletRequest request , HttpServletResponse response){
try{
// 循环数据
List<Object> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Map<String,Object> data = new HashMap<>();
data.put("a1", (int)(Math.random()*100) );
data.put("a2", (int)(Math.random()*100) );
data.put("a3", (int)(Math.random()*100) );
data.put("a4", (int)(Math.random()*100) );
data.put("a5", (int)(Math.random()*100) );
list.add(data);
}
// 表格使用的数据
Map map = new HashMap();
map.put("data",list);
map.put("title","java基于模板导出excel表格");
map.put("val","演示合并单元格的数据显示");
// 获取模板文件
InputStream is = this.getClass().getClassLoader().getResourceAsStream("x1.xls");
// 实例化 XLSTransformer 对象
XLSTransformer xlsTransformer = new XLSTransformer();
// 获取 Workbook ,传入 模板 和 数据
Workbook workbook = xlsTransformer.transformXLS(is,map); // 设置文件名
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("报表.xls" ,"UTF-8"));
// 写出文件
OutputStream os = new BufferedOutputStream( response.getOutputStream() );
// 输出
workbook.write(os);
// 关闭和刷新管道,不然可能会出现表格数据不齐,打不开之类的问题
is.close();
os.flush();
os.close();
}catch (Exception e){ }
}
}

访问 /report/ 连接时就直接下载文件了,打开看和刚才测试跑的是一样的。
————————————————
版权声明:本文为CSDN博主「临窗,听雨声」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yali_aini/article/details/85804466
java使用jxls导出Excel的更多相关文章
- weblogic 12c下jxls导出excel报错Could not initialize class org.apache.poi.xssf.usermodel.XSSFVMLDrawing
周一,开发反馈weblogic 12c下jxls导出excel报错,公司环境和UAT环境均报错,看日志如下: 2016-06-08 09:16:55,825 ERROR org.jxls.util.T ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- java导入、导出Excel文件
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- Java中导入导出Excel -- POI技术
一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实 ...
- java五行代码导出Excel
目录 先看代码 再看效果 EasyExcel 附: Java按模板导出Excel---基于Aspose实现 Java无模板导出Excel,Apache-POI插件实现 已经写过两种Excel导出插件了 ...
- JXLS导出Excel(模板导出)
1.导包 在pom.xml中加入依赖如下: <dependency> <groupId>org.jxls</groupId> <artifactId>j ...
- Java POI导入导出Excel
1.异常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException 解决方法: 使用的poi的相关jar ...
- Java程序实现导出Excel,支持IE低版本
来博客园两年多了,最近才开通了微博,因为懒所以也一直没有写东西,今天想整理一下自己前段时间遇到的一个导出的问题. 因为项目的需求,要做一部分导出功能.开始的时候用的公司的导出,但是很奇怪有部分模块导出 ...
- java基础之导出(Excel)
function exportExcel() { $.messager .confirm( '提示信息', '您确定要导出到Excel?', function(r) { if (r) { var co ...
随机推荐
- 发布Jar包到中央仓库
参考流程 https://blog.csdn.net/qq_36838191/article/details/81027586 备份还原 gpg-keys https://blog.rathena.c ...
- 多网卡做team
简明的说,就是把多个物理网卡绑定成一个逻辑上的网卡,以增加带宽,或者实现主备功能,增加硬件冗余,以实现更高的系统稳定性,目前主要有bond和team两种做法,而bond主要是针对双网卡的情况来说,而t ...
- Leetcode练习题Search Insert Position
Question: Given a sorted array and a target value, return the index if the target is found. If not, ...
- MVC过滤器:自定义授权过滤器
一.授权过滤器 授权过滤器用于实现IAuthorizationFilter接口和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全策略.AuthorizeAttribute类继承了IAu ...
- C#数组1
using System; namespace ConsoleApp3 { class Program { static void Main(string[] args) { , , , , , }; ...
- 动态SQL屏幕条件选择(里面还有赋值的新语法)
有时候屏幕条件中使用PARAMETERS时候,如果你为空的话,会查不出数据,但是可能你的想法是不想限制而已,但是系统默认理解为了空值,这个时候,如果取判断一下条件是不是空,在SQL里决定写不写的话,会 ...
- ABAP 7.4 新语法-内嵌生命和内表操作(转)
转自:https://www.cnblogs.com/mingdashu/p/6744637.html ABAP 7.4 新语法-内嵌生命和内表操作 1.内嵌声明 2.内表操作 3.opensql ...
- C# 修改配置文件
/// <summary> /// 保存配置文件的设定 /// </summary> /// <param name="Key"></pa ...
- [笔记] .net core WPF 程序,发布独立程序与单一执行程序
如何发布独立可运行的,和只有一个文件的 .net core WPF 程序. 1 发布并打包 Step 1 在项目上右键,在菜单中选择发布,使用文件发布,选择独立部署模式,其它的条件,依照自己的情况设置 ...
- 15个Python面试问题
引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Python.下面这些问题涉及了与Python相关的许多技能,问题的关注点主要是语言本身,不是某个特定的包或模块.每一个问题都可以 ...