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 ...
随机推荐
- Redis高可用集群-哨兵模式(Redis-Sentinel)
前言 Redis哨兵模式,用现在流行的话可以说就是一个“哨兵机器人”,给“哨兵机器人”进行相应的配置之后,这个"机器人"可以7*24小时工作,它能能够自动帮助你做一些事情,如监控 ...
- ViewTool Hollong BLE Sniffer Support Linux OS Introduction
ViewTool Hollong BLE Sniffer Support Linux OS Introduction 1. Download Software:http://www.viewtool. ...
- 用sticky.js实现头部导航栏固定
在页面中,如果页面长度过大,滑动页面时,头部导航栏则会跟着划走. 我的头部导航栏代码为: <div class="headbar"> <center class= ...
- 【总结】《氨基酸新晋管理者领导力培训》第一次课_Day2_学习心得
7月26日第二天学习心得: 今天主要学习了执行贯彻和绩效反馈两大块内容,我的心得有: 一.执行层面有两大原则:--理解员工需求: 回顾了一下自己以往的经历,一般这块我用的最多的一般是在接到一个新项目的 ...
- 一些常见的http状态码
HTTP状态码是服务器和客户端之间交流信息的语言,下面列出一些常见的HTTP状态码. 1XX系列 指定客户端应相应的某些动作,代表请求已被接受,需要继续处理.由于在HTTP/1.0协议中没有定义任何1 ...
- oidc hybrid flow 与另外两种模式的异同
很多学习identityserver的文章都没有解释清楚oidc hybrid混合模式的含义.本文将解释hybrid模式与另外两种模式的主要区别. 我们先看一下一手文档: https://openid ...
- C#上手练习7(构造方法语句)
创建类的对象是使用“类名 对象名 = new 类名()”的方式来实现的. 实际上,“类名()”的形式调用的是类的构造方法,也就是说构造方法的名字是与类的名称相同的. 构造方法的定义语法形式如下. 访问 ...
- django实现客户端文件下载
基于django项目,由于不是专门讲文件的下载,这里仅是项目需要,所以可能不是特别的详细.仅做流程的演示: 实现过程: 1.准备下载url # 下载文件 url(r'^download_file/$' ...
- Java之线程与进程
一.线程与进程 线程:一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.多线程是多任务的一种特别形式,但多线程使用了更小的资源开销. 进程:一个进程包括 ...
- JavaScript 正则表达式 初探
JavaScript 正则表达式 正则表达式是构成搜索模式的字符序列 搜索模式可用于文本搜索和文本替换操作 使用正则 字符串方法 在JavaScript中,正则表达式常常用两个字符串方法: searc ...