-
excel导出
2018-11-06 10:57:14下面为本地生成excel的例子,若需导出,则将文件输出流转为response输出流。 package excel; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import jxl.Workbook; ...下面为本地生成excel的例子,若需导出,则将文件输出流转为response输出流。
package excel; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import jxl.Workbook; import jxl.format.UnderlineStyle; import jxl.write.Colour; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class WriteExcel { public void writeExcel() throws Exception{ File file = new File("D:\\Sim\\Project\\Excel\\test2.xls"); if (!file.exists()) { file.createNewFile(); } OutputStream os = new FileOutputStream(file);// 取得输出流 WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件 String tmptitle = "测试数据"; // 标题 WritableSheet wsheet = wbook.createSheet(tmptitle, 0); // sheet名称 // 设置excel标题 WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK); WritableCellFormat wcfFC = new WritableCellFormat(wfont); wcfFC.setBackground(Colour.AQUA); wsheet.addCell(new Label(1, 0, tmptitle, wcfFC)); wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK); wcfFC = new WritableCellFormat(wfont); // 开始生成主体内容 wsheet.addCell(new Label(0, 2, "姓名")); wsheet.addCell(new Label(1, 2, "性别")); wsheet.addCell(new Label(2, 2, "证件类型")); wsheet.addCell(new Label(3, 2, "证件号码")); wsheet.addCell(new Label(4, 2, "手机号")); int count = 0; for (int i=0;i<10;i++) { wsheet.addCell(new Label(0, count + 3, "我是"+i+"号")); wsheet.addCell(new Label(4, count + 3, "my phone is:"+i)); count++; } // 主体内容生成结束 wbook.write(); // 写入文件 wbook.close(); os.close(); // 关闭流 } }
pom依赖:
<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl --> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6</version> </dependency> </dependencies>
结果图:
new Label(0, 2, "姓名") 指 新建一格 A3 相当于直角坐标系的X/Y轴定位
x轴 数组对应关系为{0,1,2,3,.......,25} to {A,B,C,........,Z}
y轴 从也是从0开始
-
springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解
2019-02-12 18:48:35提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并以及背景色,字体颜色的填充,...提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并以及背景色,字体颜色的填充,文本内容的对齐方式等)。
实现思路:
首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口业务代码里通过IO流加载到这个Excel模板文件,读取指定的工作薄(也就是excel左下角的Sheet),接着给模板里的指定表头填充表头数据,接着读取数据库的相关数据用数据传输模型(DTO)封装数据,最后循坏填充excel的数据行(逐行逐列的填充数据),最后把填充完数据的Excel文件流输出(下载),即完成了数据库数据按照指定Excel模板导出Excel的完整过程。废话不多说,下面直接上代码。
一、配置POI框架的依赖
本案例是maven项目,解析Excel采用市面主流的POI框架,在pom.xml文件添加POI框架的依赖
<!--读取excel文件,配置POI框架的依赖--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
二、放入excel模板文件
目录结构如下所示:
二、导出excel具体实现
@RestController @RequestMapping("/excel") public class ExcelExportController { @RequestMapping(value="/excelExport") public ResponseEntity<Resource> excel2007Export(HttpServletResponse response,HttpServletRequest request) { try { ClassPathResource cpr = new ClassPathResource("/templates/"+"student.xlsx"); InputStream is = cpr.getInputStream(); Workbook workbook = new XSSFWorkbook(is); org.apache.poi.ss.usermodel.Sheet sheet0 =workbook.getSheetAt(0); Row row = sheet0.getRow(2); Cell cell0 = row.getCell(0); Cell cell1 = row.getCell(1); Cell cell2 = row.getCell(2); cell0.setCellValue("guo"); cell1.setCellValue("bin"); cell2.setCellValue("hui"); System.out.println(cell0); //这里作为演示,造几个演示数据,模拟数据库里查数据 List <Student> list = new ArrayList<Student>(); Student st1 = new Student(); Student st2 = new Student(); st1.setName("张三"); st1.setScore("87"); st1.setClass("一班"); st2.setName("张四"); st2.setScore("57"); st2.setClass("二班"); list.add(st1); list.add(st2); for(int i = 0;i<list.size();i++){ Row row = sheet0.getRow(i+3);//从第三行开始填充数据 row.setCellValue(list.get(i).getName()); row.setCellValue(list.get(i).getScore()); row.setCellValue(list.get(i).getClass()); } String fileName = "moban.xlsx"; downLoadExcel(fileName, response, workbook); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new ResponseEntity<Resource>(HttpStatus.OK); } public static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) { try { response.setCharacterEncoding("UTF-8"); response.setHeader("content-Type", "application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\""); workbook.write(response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } } }
欢迎各位开发者朋友一起交流。笔者电话(微信):18629374628
-
excel导出经验
2020-07-01 19:46:47excel导出经验,供参考excel导出经验,供参考
数据量:1万以下
直接导出,正常在5秒内
数据量:1万-10万
直接导出,正常在10秒内
数据量:超过10万,建议多文件导出。
可使用多线程查询,比如一个线程查1万数据,gzip压缩,设置响应头告诉浏览器用gzip解压
同时也可以用CVS代替POI导出,节省存储空间
搞的好点,应该也在20秒内数据量:超过100万,建议异步导出。
新建一个异步导出任务表,每新发起一次导出,就先插入一条记录,状态是正在导出
然后后台开始异步执行,最终把生成的文件存在服务器或文件服务器上,然后将url存在记录中,同时记录状态改为已完成导出
然后前端引导用户去指定页面下载文件。注意:
1、不同的系统,针对不同的用户,可能对用户体验的要求不一样,但一般人在导出数据的时候,超过5秒都不想等了,所以,如果因为数据量太大导致导出总时间超过5秒,就应该考虑异步导出了。
2、导出的查询,最好是一次性查出来所有数据,避免查出来再组装数据的情况。
比如要导出人员,但人员表中只有部门code,最好是一次性用一个sql查出来,而不要先查出所有的人员,然后再给每个人员填充部门信息。3、excel 2019最大行数1048576,即2的20次方
国外一哥们为了测量excel最大行数,花了9个多小时
所以理论上一次导出的一个文件,不超过这个行数,都是没问题的4、java导出excel,前几年用POI的多点,后来都用EasyExcel了,可以理解为POI的升级版,作者是阿里巴巴的一个同学。
-
easyPoi导出excel导出错误
2019-11-22 14:46:33easyPoi导出excel导出错误解决方案 最近项目中忽然出现excel不能导出的错误,以前测试是好用的,跟代码发现是在默认样式时报控制针问题,此问题为poi依赖缺少或者easypoi版本太低导致,项目中使用的为3.0.1版本,又... -
Easypoi模版形式导出excel导出图片
2019-02-26 16:19:43若您正在使用easypoi进行excel导出的话,希望这篇文章能帮到您。 本文主要是使用easypoi通过模版的形式导出图片。 若需要导出多sheet得话,非模版形式,可以参考我的文章EasyPOI->非模版形式导出Excel(多... -
JFinal专题之POI-Excel导出解决方案
2017-04-18 11:51:35JFinal POI-Excel导出视频教程,该课程主要讲解JFinal导出Excel文件的解决方案,主要使用POI导出,JFinal输出文件流下载到本地。 -
关于excel导出日期格式变化问题处理
2019-03-13 15:01:18关于excel导出日期格式变化问题处理 1.问题描述:java web项目,本来部署在windows下,导出数据库数据是,创建日期格式为2018-08-08 08:08:08。因服务器性能问题,迁移服务器至linux(centos 7.5)。现成操作人员... -
POI百万级大数据量EXCEL导出
2018-09-25 20:18:05excel导出,如果数据量在百万级,会出现俩点内存溢出的问题: 1. 查询数据量过大,导致内存溢出。 该问题可以通过分批查询来解决; 2. 最后下载的时候大EXCEL转换的输出流内存溢出;该方式可以通过新版的... -
laravel excel 导出乱码
2017-10-28 12:27:13在使用laravel excel 导出excel数据时,xls格式会出现乱码 一种解决办法是 导出格式变成csv 另外一种就是使用 ob_end_clean -
openfeign调用excel导出接口
2019-02-21 18:29:101.常见的excel导出核心方式 excel导出在企业应用中比较常见的. 我们一般都是把接口的 header 的 “ContentType” 置为 “application/octet-stream”, 将 “Content-Disposition” 置为 "attachment;filename=... -
Java之基于注解的Excel导出
2018-12-04 16:49:04数据库Excel导出操作代码过于冗长惨不忍睹,无法复用。 目录 第一步:自定义注解: 第二步:实体类: 第三步:解析工具类: 第四步:使用: 注解配合工具类做了个小工具如下: 第一步:自定义注解: package ... -
通用Excel导出Demo
2017-06-16 21:33:17分享一个Excel导出Demo import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import org.apache.poi.hssf.usermodel.HSSFCe -
vue-cli3导出表格excel,Export2Excel导出表格,导出多sheet excel,vue导出多页表格
2019-05-18 18:55:38具体思路是:后端返回给我json数据,前端根据数据和具体的几项字段去导出excel表格,还有导出多个sheet,多页表格到一个excel表里面,具体思路 根据Export2Excel插件,并修改插件Export2Excel完成导出多页(多个sheet... -
Springboot 使用easyexcel 实现Excel导出功能
2020-10-29 11:54:39Springboot 使用easyexcel 实现Excel导出 导入easyexcel依赖 <!--alibaba easyexcel excel导出依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</... -
前后端分离,Excel导出实现
2020-04-24 23:11:09本篇博客主要记录一下,springBoot + vue前后端分离的项目,如何实现Excel导出功能,项目代码可以参考之前的一篇博文:springBoot+shiro+vue的学生管理系统(二、总体功能及登录功能) 1.添加POI依赖: <!-... -
Excel导出公共组件设计
2017-03-16 10:11:22自己动手实现一个Excel导出公共组建!!!!文章主要分为以下几个部分来说明: 1、明确目标 2、技术预研 3、技术方案选型与方案设计 4、技术实施 下面是实现一个Excel导出模块的目标: 通过自定义注解解析... -
ajax做excel导出
2016-12-29 17:34:43框架:play framework1ajax好像不能直接用过做excel导出今天测试了下: 前端代码: $("#export").click(function(){ var startTime = $("#startTime").val(); $.ajax({ url: "@{DownClickGogoalA -
Java实现Excel操作(PoiExcel导出导入)
2019-05-02 20:44:45原文链接:Java实现Excel操作(PoiExcel导出导入) PoiExcel数据的导入导出,实现方法。引入对应maven依赖文件如下: ##<!–依赖包–> ##<!–依赖包–><!--导入poi解析--> <dependency> &... -
ExtJS实现Excel导出
2013-07-28 18:04:12ExtJS实现Excel导出 ExtJS是一种基于客户端开发的AJAX应用,是一个与后台技术无关的前台ajax框架。由于项目需求,我们需要实现Excel的导出功能,前台界面是用ExtJS实现。如何实现呢? 使用POI组件实现excel导出... -
使用Hutool工具 进行Excel 导出
2020-04-15 09:51:52使用Hutool工具 进行Excel 导出 使用版本 SpringBoot2.X 引入依赖 分别引入 poi 和 hutool 的依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</... -
Excel导出失败的解决方案
2019-03-26 16:40:11我按照同事给的步骤配置excel导出功能(如下所示)。 由于导出Excel功能需要服务器安装Microsoft Office Excel应用程序,并配置Asp.Net用户权限,以下是配置的操作步骤: 1)、开始--〉运行--〉cmd; 2)、命令提示... -
eXtremeTable--Export自定义excel导出 超过32767条记录的导出
2019-04-02 16:25:43问题描述:当使用extremeTable 自带的excel导出的时候,如果数据量超过32767,就会报错,导不出来数据。通过查看jar包发现,是因为他们在定义excel导出的时候,将rownum设置为short了。 解决方案:自己重写一个导出... -
easyPoi导出excel工具类和设置excel导出样式(边框,背景色,字体)
2018-09-13 15:16:14**使用方式** 1.使用时把样式工具类ExcelStyleUtil当做参数传递进去即可 ExportParams exportParams = new ExportParams(&amp;quot;标题名称&..., ExcelType.XSSF); exportParams. -
excel导出总结
2010-01-07 11:21:001.目前excel导出常用有三种方法。poi导出jxl导出采用velocity模板导出。POI导出没用过,这里不做评述。1.jxl导出。 (1)先采用excel模板进行导出。可以根据事先制定好的模板,生成一个新的excel文件。好处:对模板... -
Java之Excel导出工具类使用教程
2019-03-20 17:34:02本工具类经过PostMan和...市面上有很多封装好的导出工具(如:阿里的easyExcel,GitHub上xxl-excel等),但如果直接引用依赖,扩展性和定制性比较差,所以博主通过apache.poi,自己实现一款Excel导出工具,方便定制使用。 -
SpringBoot整合EasyExcel实现Excel导出功能
2019-10-31 13:42:26SpringBoot整合EasyExcel实现Excel导出功能 导入需要的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beta5</... -
Jxls+Spring MVC实现Excel导出
2015-11-06 10:23:31Jxls+Spring MVC实现Excel导出Excel导出功能是业务系统比较常见的功能,我们可以使用POI、Jexcel等来进行Excel的操作,然后再结合Spring MVC对两者的支持进行导出。但此方法的不足之处在于我们需要不厌其烦的进行... -
java百万级别excel导出(easyExcel)
2018-10-06 16:08:552.如何选择合适的excel导出? 选择的问题一般都比较纠结,选择了一个版本之后发现另外一个版本更适合,所以我们就应该选择一些我们相对较熟悉或者符合自己开发习惯的就行,没有必要纠结到底选择那个版本。 3....
-
基于支持向量机的水声信号多分类器设计
-
Visual C++ DirectX开发 仿diablo暗黑破坏神 RPG游戏 源代码.zip
-
【计算机视觉】图像算术、位运算、遮挡、切分合并通道、图像金字塔
-
基于STC89C52单片机的智能窗设计
-
Metabase从入门到精通视频教程
-
reduceByKey和groupByKey区别与用法
-
AI-人脸口罩识别特训营
-
基于MEMS的数据手套传感技术研究
-
基于嵌入式LINUX的智能车载终端系统的设计
-
Python专题精讲 文件目录与系统参数操作
-
MVC框架原理详解
-
JAVAEE主流框架之SpringMvc框架实战开发教程(源码+讲义
-
SQL Server 2016 高可用灾备技术合集
-
php开源媒介软文发布系统源码
-
Delphi微信、支付宝扫码支付源码.rar
-
Qt模仿VS2015界面框架
-
【高可用】MySQL与PostgreSQL数据库高可用分析 与实践.pdf
-
微信支付2021系列之扫码支付一学就会java版
-
微信小程序开发【汇总导航目录】
-
多线程与线程池技术详解(图书配套)