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 ...
随机推荐
- JVM基础详解
JVM基础解析(一) Java里面有 JDK ,JRE, JVM ,这三者的关系是怎么样的呢? JDK是编译时环境: 整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库 ...
- Leetcode练习题Longest Common Prefix
Question: Longest Common Prefix Write a function to find the longest common prefix string amongst an ...
- 详解JAVA8Stream 方法引用(基础){全}
1: Stream流 1.1 引言 1.2 流式思想概述 1.3 获取流 1.4 常用方法 1.5 练习:集合元素处理 2:方法引用 2.1 冗余的Lambda场景 2.2 方法引用符 2.3 通过对 ...
- 利用zabbix监控ogg进程(Windows平台下)
本文给大家介绍如何监控windows平台下的ogg程序.(注:所有操作都在administrator用户下面进行操作) 监控linux平台下的ogg程序请看:https://www.cnblogs.c ...
- 玩下PHP的分词,最近有这个需求
找了个地方 下载代码 我是在这里下载的 https://www.jb51.net/codes/65593.html 1 下载完毕后 打开是这样的文件 2 先把代码集成到thinkphp3.2.3里 ...
- git基本操作:分支管理
一.创建测试项目 1.新建GitHub仓库 在GitHub上面新创建一个仓库,用来演示分支管理,如下图所示: 点击“Create repository”按钮创建新仓库. 2.将本地仓库项目上传到Git ...
- C# shell32.dll 的用法
1 首先要使用shell32 请在项目引用中添加shell32.dll 的引用 (备注:该引用是系统dll文件 在C:\Windows\System32 目录下 可以自行拷贝到项目中) priv ...
- linux tmux用法
1. 安装工具 Centos : yum install tmux 2. 基本操作 新建会话:tmux new -s session-name 查看会话:tmux ls 进入会话:tmux a -t ...
- django支付宝支付集成
概要 本文是关于django集成支付宝[电脑网站支付]功能的过程记录. 功能逻辑主要分为两块: 用户下单跳转至支付宝支付界面 支付成功的回调验证 本文用到的alipay-sdk是基于阿里开发文档htt ...
- Angular 学习笔记(四)
作用域和控制器的交互情况: 1.控制器通过作用域对模板暴露一些方法供其调用 2.控制器中定义的一些方法可改变注册在作用域下的数据模型 3.控制器在某些场合可能需设置监听器来监听作用域中的数据模型:这些 ...