java的json导出excel_利用json生成excel表格
起因:
之前利用反射生成excel导出,这个组件本来挺好用的,结果,坑爹的本地研发没有问题,生产环境却有问题。不知道什么原因直接导致服务重启,还重新加载类,直接导致jvm的永久区内存溢出。
异常: java.lang.OutOfMemoryError: PermGen space
说明:
Perm空间被占满。无法为新的class分配存储空间而引发的异常。这个异常以前是没有的,但是在Java反射大量使用的今天这个异常比较常见了。主要原因就是大量动态反射生成的类不断被加载,最终导致Perm区被占满。
更可怕的是,不同的classLoader即便使用了相同的类,但是都会对其进行加载,相当于同一个东西,如果有N个classLoader那么他将会被加载N次。因此,某些情况下,这个问题基本视为无解。当然,存在大量classLoader和大量反射类的情况其实也不多。
解决方案:可以针对单独的一个数据对象写一个excel 表格的生成。缺点:不能通用,我在赶任务的时候就是这样干的。
后来工作任务没这么重了,我在空闲时间想到可以利用json数据。利用json来取值,可以达到通用性的
maven 引用
net.sf.json-lib
json-lib
2.4
jdk15
org.apache.poi
poi-ooxml
3.16-beta2
基本代码:
packagecom.example;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.util.HSSFColor;public classTest {public static voidmain(String[] args) {//TODO Auto-generated method stub
List list = new ArrayList();
TestBoby a= newTestBoby();
TestBoby b= newTestBoby();
a.setName("aa");
a.setAge(3);
b.setAge(4);
b.setName("nn");
list.add(b);
list.add(a);
JSONArray json= JSONArray.fromObject(list); //首先把字符串转成 JSONArray 对象
String[] heads={"name","age"};
Export2Excel(heads,heads,json);
}public static voidExport2Excel(String[] heads,String[] names,JSONArray jsonArray) {
HSSFWorkbook workbook= new HSSFWorkbook();//创建一个Excel文件
HSSFSheet sheet= workbook.createSheet();//创建一个Excel的Sheet
HSSFCellStyle style=workbook.createCellStyle();
style.setFillBackgroundColor(HSSFColor.BLUE_GREY.index);
HSSFRow titleRow= sheet.createRow(0);for(int i=0;i
titleRow.createCell(i).setCellValue(heads[i]);
}
titleRow.setRowStyle(style);if (jsonArray.size() > 0) {for (int i = 0; i < jsonArray.size(); i++) {
HSSFRow row= sheet.createRow(i + 1);
JSONObject json= jsonArray.getJSONObject(i); //遍历 jsonarray
for(int j=0;j
row.createCell(j).setCellValue(json.get(names[j]).toString());
}
}
}try{
FileOutputStream fos= new FileOutputStream("a.xls");
workbook.write(fos);
fos.close();
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
View Code
java的json导出excel_利用json生成excel表格相关推荐
- java poi 生成excel_利用POI生成EXCEL文件的方法实例
一.背景 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修 ...
- java使用POI导出word数据以及生成word表格
暑期在杭州实习了两个月,主要是使用vue+SpringMVC进行一个网页开发. 而在开发的过程中,也遇到了比较常见的文件导出问题–以固定格式将数据存储在word.excel等office文件格式中. ...
- html利用js生成excel表格(html表格标签生成excel)table2excel实例:一表格多sheets
table2excel实例 使用插件:table2excel.js 简介:table2excel 可以转换和下载html上的表格,使他成为.xlsx格式,能够被Excel打开 实例代码 <hea ...
- pandas后台导出excel_利用pandas将numpy数组导出生成excel
代码 # -*- coding: utf- -*- """ Created on Sun Jun :: @author: Bruce Lau ""&q ...
- java横向导出excel_利用Java进行Excel的数据导入导出
1. 引言 MS 的电子表格(Excel)是Office 的重要成员,是保存统计数据的一种常用格式.在一 个Java 应用中,将一部分数据生成Excel 格式,是与其他系统无缝连接的重要手段.在远程 ...
- 利用POI生成EXCEL报表(通过web页面导出后台数据)
很多时候需要将数据利用浏览器进行导出,这个时候我们就可以采用Apache的POI进行实现通过web页面实现Excel导出后台数据,并且以.xlsx的形式下载到本地,也就是excel表格形式. 首先先下 ...
- java使用jxl生成excel表格,jsp使用js下载excel文件xls
java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...
- Java后台生成Excel表格
Java后台生成Excel表格 功能简述 需求 目标 实现 1.首先在项目中导入jxl相关jar包,并引入 2.编写代码 3.结果 后记 功能简述 由于公司业务需求,我需要实现一个完全通过Java后台 ...
- 利用owc生成excel并且显示在页面
主要利用OWC生成Excel,画表头和显示从数据库读出来的数据,然后显示在前台页面上,无需客户端安装office,只需要安装owc.一年以前写的,似乎很烦锁,哪位有高见请指教! 后面利用OWC操作EX ...
最新文章
- 切换JAVAC的方法
- 数学建模学习笔记——灰色关联分析(评价类)
- java内存图怎么画,jvm内存模型怎么画?简单美观的模型图制作软件
- C语言经典面试题目(转的,不过写的的确好!)
- 漫画:什么是MD5算法
- 用html和css布局如下图像,[看书][CSS精粹(第2版)]第三章 CSS和图像 HTML网页布局...
- 推荐40个优秀的免费CSS工具
- redis linux工具安装,redis Linux版本的安装,以及一些基本的认识
- 大数据学习笔记:距离度量和相似度度量
- java 时间类型添加_java date类型 怎么 插入 时间 到 数据库
- 水体专题提取与叶绿素a浓度反演
- 【cf-edu-round72: C 】The Number Of Good Substrings(思维)
- 混响延迟插件9个合集 – ValhallaDSP Bundle 2020 WiN 免安装版
- MVP简单使用+RecyclerView
- 面试后说hold什么意思_面试结束后就傻傻等通知?你还可以做这三件事!
- 全球与中国液压离合器市场现状及未来发展趋势(2022)
- 网易笔试题 寻找第K大
- 关于图片onload事件兼容性处理, 谷歌浏览器版本 56.0.2896.3 (64-bit) 微信客户端浏览器 canvas篇
- Linux命令行与shell脚本编程大全第三版 学习笔记
- JAVA的while循环语句和break与continue的使用
热门文章
- 如何在python中使用正则表达式从多行字符串中删除特定字符
- 深入浅析Python 函数注解与匿名函数
- Python基础教程:list和tuple
- python整数与IP地址转换
- Python属性和内建属性
- python函数中把列表(list)当参数时的入坑与出坑
- 【opencv4】opencv教程 C++ 4、Mat对象(深拷贝:clone()、copyTo(),create()创建图片,zeros()、eye()初始化空白图像,Scalar()创建向量)
- C语言malloc动态分配内存分配失败怎么办?exit(OVERFLOW);(include <cstdlib>)
- 给IDEA给类和方法添加注解
- linux——关于ip、静态网络、动态网络、网关、DNS的设置