java中使用jxl导出excel时,需指定WritableSheet对象中对应于每个单元格的数据。List类型是一种常用的数据类型,它里面的元素是实体对象,当将它创建为WritableSheet对象时,它的每个实体元素可以通过简单索引循环的形式遍历到,但对实体每个属性的遍历,却不能以简单索引循环的形式实现,而只能用getter方法去逐一获取,这样,对不同的实体,均需特定的实现代码与之对应,势必会造成大量的代码冗余。

    一种有效的策略是,将List转化为jsonArray,把实体对象的属性名构造为一个字符串数组,那么,只需使用该数组的索引,对每个json对象循环访问它的字符串形式的键,便可完成对属性值的遍历。

示例:

实体类Student

public class Student {
private String name;
private String gender;
private int age; public Student(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}

JsonArray导出为Exclel

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import java.io.File;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List; public class JSONArrayToExcel {
public static void main(String[] args) { Student student1 = new Student("张三","男",18);
Student student2 = new Student("李四","男",19);
Student student3 = new Student("小花","女",20); //实体List
List<Student> studentList = new ArrayList<>();
studentList.add(student1);
studentList.add(student2);
studentList.add(student3); //List转为JSONArray
JSONArray jsonArray = JSONArray.fromObject(studentList); //实体属性名称数组
Field[] fields = null;
try {
Class clazz = Class.forName("Student");
fields = clazz.getDeclaredFields();
}catch (Exception e){
e.printStackTrace();
} if (fields != null){
String fileName = "jsonarrayToExcelTest.xls"; //文件名
File myFile = new File("./"+fileName); try {
WritableWorkbook writableWorkbook = Workbook.createWorkbook(myFile); //定义工作簿对象
WritableSheet writableSheet = writableWorkbook.createSheet("sheet1",0); //定义sheet对象 for (int i = 0; i < fields.length; i++) { //加入表头单元格内容
writableSheet.addCell(new Label(i,0,fields[i].getName()));
} for (int i = 0; i < jsonArray.size(); i++) { //加入数据单元格内容
JSONObject json = jsonArray.getJSONObject(i);
for (int j = 0; j < fields.length; j++) {
writableSheet.addCell(new Label(j,i+1,json.get(fields[j].getName()).toString()));
}
} writableWorkbook.write();
writableWorkbook.close();
}catch (Exception e){
e.printStackTrace();
} } }
}

参考:

  1. https://blog.csdn.net/Albert201605/article/details/120331212
  2. https://blog.csdn.net/WangKun_0612/article/details/83618094
  3. https://blog.csdn.net/qqllife/article/details/77237969?spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-10.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-10.highlightwordscore

Java中将jsonArray导出为Excel的更多相关文章

  1. 自己写的java用jxl导出到excel工具

    package com; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; i ...

  2. JAVA利用JXL导出/生成 EXCEL

    /** * 导出导出采暖市场部收入.成本.利润明细表 * @author JIA-G-Y */ public String exporExcel(String str) { String str=Se ...

  3. java利用JXL导出/生成 EXCEL【my】

    一.创建一个excel文件 package test;// 生成Excel的类 import java.io.File; import jxl.Workbook;import jxl.write.La ...

  4. 史上最简单的在 Yii2.0 中将数据导出成 Excel

    在 vendor/yiisoft/yii2/helpers/ 创建一个 Excel.php <?php namespace yii\helpers;   class Excel{         ...

  5. java连接MongoDB查询导出为excel表格

    背景 因为项目需求.每一个星期须要统计每一个公众号7天的訪问数,月底就须要统计一个月的訪问数,40多个公众号.每次手动统计都须要花费1个小时,总之是一项无技术耗时耗神的手工活. 于是.想写个程序来统计 ...

  6. 记一次 Java 导出大批量 Excel 优化

    常用的excel导出方案,详情见Spring Boot 入门(十二):报表导出,对比poi.jxl和esayExcel的效率,其中jxl.esayEscel 底层都是基于 poi,它们仅仅是对 poi ...

  7. Java之POI导出Excel(一):单sheet

    相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码  <!-- ...

  8. 【Java EE 学习 17 下】【数据库导出到Excel】【多条件查询方法】

    一.导出到Excel 1.使用DatabaseMetaData分析数据库的数据结构和相关信息. (1)测试得到所有数据库名: private static DataSource ds=DataSour ...

  9. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  10. java基础之导出(Excel)

    function exportExcel() { $.messager .confirm( '提示信息', '您确定要导出到Excel?', function(r) { if (r) { var co ...

随机推荐

  1. FPGA技术助手,notepad++ 两个插件

    DS的时间很珍贵的 ,尤其是过了32岁以后,一身的病,扛不住996的制度.为了增加速度,只能想办法怎么在fpga工作上面降低时间.你有心思点来点去的GUI的界面.还不如用一个脚本完全做完.notepa ...

  2. keycloak~jwt的rs256签名的验证方式

    接口地址 keycloak开放接口地址:/auth/realms/fabao/.well-known/openid-configuration rsa算法相关术语 RSA算法是一种非对称加密算法,其安 ...

  3. Ajax 原理是什么?如何实现?

    一.是什么 AJAX全称(Asynchronous Javascript And XML) 即异步的JavaScript 和XML,是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情 ...

  4. 通过一个非常简单的SSM项目来将SpringMVC配置整理清晰。

    所有的文件在Git上面都能找到,由于把代码搞上来看的很不舒服,结构不清晰. 第一步:确定环境 IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 第二步:创建数据库 参考GIT上 ...

  5. 力扣396(java)-旋转数组(中等)

    题目: 给定一个长度为 n 的整数数组 nums . 假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数  F 为: F(k) = 0 * arrk[0 ...

  6. RocketMQ 消息集成:多类型业务消息-普通消息

    简介: 本篇将从业务集成场景的诉求开始,介绍 RocketMQ 作为业务消息集成方案的核心能力和优势,通过功能场景.应用案例以及最佳实践等角度介绍 RocketMQ 普通消息类型的使用. 引言 Apa ...

  7. Flagger on ASM——基于Mixerless Telemetry实现渐进式灰度发布系列 2 应用级扩缩容

    简介: 应用级扩缩容是相对于运维级而言的.像监控CPU/内存的利用率就属于应用无关的纯运维指标,针对这种指标进行扩缩容的HPA配置就是运维级扩缩容.而像请求数量.请求延迟.P99分布等指标就属于应用相 ...

  8. 饿了么EMonitor演进史

    简介: 可观测性作为技术体系的核心环节之一,跟随饿了么技术的飞速发展,不断自我革新. 序言 时间回到2008年,还在上海交通大学上学的张旭豪.康嘉等人在上海创办了饿了么,从校园外卖场景出发,饿了么一步 ...

  9. 【实用教程】在配备持久内存的实例上部署Redis应用

    简介:配备持久内存的实例(例如re7p.r7p.re6p)提供了超大CPU内存配比,Redis应用运行在这类实例上可以大幅度降低单GiB内存的成本.本文以部分操作系统为例,介绍如何在这类实例上快速部署 ...

  10. 阿里云徐立:面向容器和 Serverless Computing 的存储创新

    ​简介:以上为大家分享了阿里云容器存储的技术创新,包括 DADI 镜像加速技术,为容器规模化启动奠定了很好的基础,ESSD 云盘提供极致性能,CNFS 容器网络文件系统提供极致的用户体验. 作者:徐立 ...