Excel之XLSTransformer

article/2025/11/5 3:10:06

前言

利用该工具类可以向excel模板中写入数据,而不用写过多代码画excel

引入依赖

java <dependency> <groupId>net.sf.jxls</groupId> <artifactId>jxls-core</artifactId> <version>1.0.3</version> </dependency>

单Sheet页导出

创建如下excel模板,通过文件输入流读取excel模板,利用XLSTransformer类将数据写入模板,并将得到的新excel下载到本地,代码如下:

excel模板.png

```java public static void main(String[] args) throws InvalidFormatException, IOException { // 循环数据 List list = new ArrayList<>(); for (int i = 0; i < 100; i++) { Map 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<Object,Object> map = new HashMap<>();
map.put("data", list);
map.put("title", "java基于模板导出excel表格");
map.put("val", "演示合并单元格的数据显示");InputStream is = new FileInputStream("C:\\1111.xlsx");
XLSTransformer xlsTransformer = new XLSTransformer();
// 获取Workbook, 传入模板和数据
Workbook workbook =  xlsTransformer.transformXLS(is, map);OutputStream os = new BufferedOutputStream(new FileOutputStream("C:\\2222.xlsx"));
workbook.write(os);
is.close();
os.flush();
os.close();

} ```

多sheet页导出

多sheet页导出.png

```java public class TransformXLS { public static void main(String[] args) throws InvalidFormatException, IOException { FileInputStream is = new FileInputStream("C:\Users\1111.xlsx");

// data中每一个list对应一个sheet页List<List<Map<String, Object>>> data = getList();List<String> sheetNames = new ArrayList<String>();sheetNames.add("湘潭市");sheetNames.add("河南省");XLSTransformer transformer = new XLSTransformer();Workbook workbook = transformer.transformMultipleSheetsList(is,   // 输入流data, // 要写入的数据sheetNames, // sheet页名字"result", // 对应excel中标签的名字new HashMap<>(), 0);FileOutputStream os = new FileOutputStream("C:\\Users\\2222.xlsx");workbook.write(os);os.flush();os.close();is.close();
}

} ```

模拟要写入模板的数据

```java public static List >> getList() { //每一个list代表一个sheet页的数据 List >> list = new ArrayList<>();

//这里我们用map为例,这个是用什么都可以的。
List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("cityName", "湘潭市");
map1.put("countyName", "湘潭县");
map1.put("townName", "中路铺镇");
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("cityName", "湘潭市");
map2.put("countyName", "雨湖区");
map2.put("townName", "基建营");
list1.add(map1);
list1.add(map2);List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("rownums", 1);
map3.put("cityName", "河南省");
map3.put("countyName", "安阳市");
map3.put("townName", "林州市");
Map<String, Object> map4 = new HashMap<String, Object>();
map4.put("rownums", 2);
map4.put("cityName", "河南省");
map4.put("countyName", "安阳市");
map4.put("townName", "汤阴县");
list2.add(map3);
list2.add(map4);list.add(list1);
list.add(list2);
return list;

} ```


http://chatgpt.dhexx.cn/article/ilFpCegZ.shtml

相关文章

使用XLSTransformer生成报表的步骤和流程

使用XLSTransformer生成XLS报表的步骤和流程&#xff1a; 需要引入的jar包&#xff1a; jxls-core-0.9.7.jar jxls-reader-0.9.7.jar poi-3.6.jar commons-jexl-1.1.jar commons-digester-2.0.jar commons-beanutil-core-1.8.3.jar commons-collection.jar 示例代码…

利用模板导出文件(一)之XLSTransformer导出excel文件

由于现在好多公司都在实行办公无纸化操作&#xff0c;所以一般都是使用excel以及word来办公&#xff0c;本文是公司项目中使用excel文件模板生成对应的文件&#xff1a; 首先&#xff0c;需要导入一下几个包&#xff1a; 接下来就是具体的代码&#xff1a; import java.io.Fil…

关于使用XLSTransformer.transformXLS导出Excel表格中遇到的问题

1. 需求&#xff1a;最近拿到的一个任务&#xff0c;是将订单列表导出&#xff0c;按照订单列表导出&#xff08;包括筛选条件&#xff09;。 背景&#xff1a;由于原本的订单列表查询代码太过繁重&#xff0c;里面夹杂的逻辑较多&#xff0c;再有一个是自己想尽快的熟悉公司…

最简单方便的excel导出方式

前言&#xff1a;开发各种统计系统以及报表系统之类的不可避免的就是导出excel功能&#xff0c;传统的poi用过的都知道&#xff0c;每个sheet每个row都需要去定义去美化&#xff0c;繁琐不说还很浪费时间&#xff0c;最近本人发现两种较快速的方法&#xff0c;一种是excel模版方…

Handler、Looper、HandleThread、ActivityThread简介

1. Handler 源码位于&#xff1a; platform/frameworks/base/core/java/android/os/Handler.java Handler允许发送和处理与线程的MessageQueue关联的Message和Runnable对象。每个Handler实例都与单个线程和该线程的消息队列相关联。 当创建一个新的Handler时&#xff0c;它会被…

Android—ActivityThread与Handler

应用启动过程&#xff1a; ActivityThread ActivityThread就是主线程或UI线程&#xff0c;ActivityThread的main方法是整个APP的入口。 public final class ActivityThread {//... final H mH new H();final ArrayMap<IBinder, ActivityClientRecord> mActivities n…

ActivityThread运行框架

http://www.embeddedlinux.org.cn/Androidkernel/77.htm 在分析中&#xff0c;我们可以看到真正对应应用进程的不是Application而是ActivityThread。我们从实际的应用堆栈可以看到&#xff1a; NaiveStart.main() ZygoteInit.main ZygoteInit$MethodAndArgsCall.run Method.In…

ActivityThread应用进程

ActivityThread应用进程 android12-release Zygote进程SystemServer进程(即system_server)Launcher启动过程、AMS:startActivity桌面启动应用 缺少具体应用进程启动 1. 涉及进程 Zygote进程&#xff1a;init进程 fork 第一个Java进程&#xff0c;Zygote是所有Java进程的父进…

Android-Activity

配置Activity&#xff1a; 如果Activity所在的包与AndroidManifest.xml文件的<manifest></manifest>标签中通过 package属性指定的包名一致&#xff0c;则android:name属性的值可以直接设置为“.Activity名称” <activity android:name"…

ActivityThread的main方法究竟做了什么?

ActivityThread的main方法究竟做了什么&#xff1f; 本文原创&#xff0c;转载请经过本人准许。 写在前面&#xff1a; 在暴雨天能去上课的都是好学生&#xff0c;能去上班的都是游泳运动员~ 问大家一个问题&#xff1a; Android中一个应用程序的真正入口是什么&#xff1f; …

Android Activity.startActivity流程简介

1. 基本概念 1.1 Instrumentation是什么? 顾名思义&#xff0c;仪器仪表&#xff0c;用于在应用程序中进行“测量”和“管理”工作。一个应用程序中只有一个Instrumentation实例对象&#xff0c;且每个Activity都有此对象的引用。Instrumentation将在任何应用程序运行前初始化…

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context

问题描述 FATAL EXCEPTION: main Process: com.wuchen.juexiao_mvvm, PID: 11732 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 原因分析…

Android主线程(ActivityThread)源代码分析

在写这篇博客之前,先抛出一个问题&#xff0c;安卓应用程序的入口是什么呢&#xff1f;我想不少人可能回答说:application的onCreate方法&#xff0c;其实并不是的&#xff0c;即使是application&#xff0c;也有一个方法比onCreate先执行&#xff0c;这个方法就是attachBaseCo…

Android :Activity

Activity Activity 代表手机或平板电脑中的一屏&#xff0c;它提供了和用户交互的可视化界面。 一个 Android 应用中&#xff0c;可以有多个 Activity。这些 Activity 组成了 Activity 栈&#xff08;Stack&#xff09;&#xff0c;当前活动的 Activity 位于栈顶。 Activity …

ActivityThread

ActivityThread运行框架 在分析中&#xff0c;我们可以看到真正对应应用进程的不是Application而是ActivityThread。我们从实际的应用堆栈可以看到&#xff1a; NaiveStart.main() ZygoteInit.main ZygoteInit$MethodAndArgsCall.run Method.Invoke method.invokeNative Activi…

【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 )

文章目录 一、Activity 启动源码分析 ( AMS | ActivityManagerService )1、Instrumentation 调用 AMS 方法2、ActivityStarter 调用 AMS 方法3、Process 启动新进程 二、Activity 启动源码分析 ( ActivityStarter )1、ActivityStarter.startActivityMayWait() 方法2、ActivityS…

Android 中你碰不到但是很重要的类之ActivityThread

作者&#xff1a;Drummor 通过本文能了解一下内容 1、和系统进程打交道的桥头堡 应用进程起来之后ART(Android Runtime)第一站就是ActivityThread&#xff0c;代码层面上就是ActivityThread的main()方法&#xff0c;是不是很熟悉&#xff0c;爷青回啊&#xff0c;这不就是java…

浅析ActivityThread#main()方法和生命周期事务处理(代码基于Android-12)

浅析ActivityThread#main()方法和生命周期事务处理&#xff08;代码基于Android-12&#xff09; 问题&#xff1a; Activity、Application的onCreate()在哪被调用的&#xff1f; ContentProvider为什么比Application先创建&#xff1f; Activity#attach()在哪里被调用的&#…

Android中的ActivityThread和ApplicationThread

一&#xff1a;ActivityThread和ApplicationThread 1.ActivityThread&#xff1a;主线程、UI线程&#xff0c;程序的入口&#xff08;main函数&#xff09;&#xff0c;不是线程是运行在主线程中的一个对象 主要的成员变量如下&#xff1a; mActivities、mServices和mProvide…

一文读懂ActivityThread

ActivityThread是什么&#xff0c;是主线程吗&#xff1f;它是如何被创建的&#xff0c;以及它的作用又是什么呢&#xff1f;带着这些问题&#xff0c;我们一起来分析下ActivityThread。 全文分为以下几个部分&#xff0c;大家可根据需求阅读 文章目录 ActivityThread是什么Act…