Java工具总结:将数据内容写入excel文件
Java工具总结:将数据内容写入excel文件
文章目录
- Java工具总结:将数据内容写入excel文件
- 一、背景
- 二、功能描述
- 三、使用该工具类:Java代码演示
- 四、分析代码
- 4.1 几个重要的JavaBean:
- 4.2 工具类的调用入口
- 五、更多实用的工具类
一、背景
Java项目开发中,经常会遇到这样的需求:将数据内容写入excel文件。这里开发了一个将数据内容写入excel文件的工具类,直接调用工具方法即可实现这样的需求。
市面上也有其他类似的工具,但大多理解起来很困难,封装得太完美,很难基于它进行定制改造。
该工具类是基于org.apache.poi
开发出来了,理解起来非常容易。该工具类做得也非常灵活,能够实现常见的需求,比如:设置列宽、对列合并单元格、设置背景颜色等等。
二、功能描述
使用该工具类将数据内容写入excel文件的过程中能够做下面这些事情:
- 创建一个不存在的excel文件;
- 在写入内容前,如果要写入的excel文件已经存在,会将该excel文件删除;
- 可以创建出多个sheet页,并向这多个sheet页写入内容;
- 每个sheet页,可以写入多个表格内容,每个表格之间会有一个空行;
- 可以基于rgb(三原色)为单元格设置特定的颜色;
- 可以设置表格列的宽度,设置的值,会被乘以256;
- 可以设定值,代表前多少列,为前几列的每一列进行合并单元格;
例如:
优化:
2022年10月15日,对合并单元格功能进行了优化,通过指定要进行单元格合并的范围,就能进行灵活的单元格合并:
// 指定要合并的单元格的范围// 某一个表格, 第1行到第2行, 第1列到5列。进行合并单元格tableContent.setRowRange(Range.<Integer>closed(1, 2));tableContent.setColRange(Range.<Integer>closed(1, 5));
效果图如下:
三、使用该工具类:Java代码演示
完整的演示代码:MyExcelUtilTest。
/*** 将数据内容写入excel文件*/@Testpublic void createNewExcelWriteContentTest() {String excelFilePath = "/Users/lifei/Documents/opt/doc/demo01.xlsx";ExcelContent excelContent = new ExcelContent();List<ExcelSheetContent> sheetContentList = new ArrayList<>();// 添加第一个sheet页的内容sheetContentList.add(createFirstSheet());// 添加第二个sheet页内容sheetContentList.add(createSecondSheet());// 添加多个sheet页的内容excelContent.setSheetContentList(sheetContentList);MyExcelUtil.createNewExcelWriteContent(excelContent, excelFilePath);}/*** 创建第一个sheet* @return*/private ExcelSheetContent createFirstSheet() {// 第一个sheet页ExcelSheetContent firstSheetContent = new ExcelSheetContent();// 设置sheet页的名称firstSheetContent.setSheetName("第一个sheet页");List<TableContent> firstSheetTableList = new ArrayList<>();// 第一个sheet页里的第一个表格TableContent tableContent1 = createSheetFirstTable();// 第一个sheet页里的第二个表格TableContent tableContent2 = createSheetSecondTable();// 第三个单元格:合并复杂单元格TableContent tableContent3 = createSheetTable03();// 添加表格firstSheetTableList.add(tableContent1);firstSheetTableList.add(tableContent2);firstSheetTableList.add(tableContent3);// 往第一个sheet页中,添加多个表格firstSheetContent.setTableContentList(firstSheetTableList);return firstSheetContent;}/*** 创建第一个表格* @return*/private TableContent createSheetFirstTable() {TableContent tableContent = new TableContent();tableContent.setTitle("第一个sheet页的第一个表格");// 创建一个2行5列的表格int rowNum = 3, colNum = 5;CellContent[][] table = new CellContent[rowNum][colNum];table[0] = new CellContent[]{new CellContent.Builder().cellValue("用户").builder(),new CellContent.Builder().cellValue("性别").builder(),new CellContent.Builder().cellValue("得分").builder(),new CellContent.Builder().cellValue("评价").builder(),new CellContent.Builder().cellValue("状态").builder()};table[1] = new CellContent[]{new CellContent.Builder().cellValue("小a").builder(),new CellContent.Builder().cellValue("男").builder(),new CellContent.Builder().cellValue("21").builder(),new CellContent.Builder().cellValue("好").myCellBGColor(new MyCellColor(51, 204, 51)).builder(),new CellContent.Builder().cellValue("在职").builder()};table[2] = new CellContent[]{new CellContent.Builder().cellValue("小b").builder(),new CellContent.Builder().cellValue("男").builder(),new CellContent.Builder().cellValue("10").builder(),new CellContent.Builder().cellValue("差").myCellBGColor(new MyCellColor(255, 153, 102)).builder(),new CellContent.Builder().cellValue("在职").builder()};tableContent.setTable(table);// 添加标题颜色tableContent.setTitleBGColor(new MyCellColor(153, 255, 153));// 设置列宽tableContent.setColumnWidthsBase256(new int[]{20, 20, 20, 20, 20});// 设置标题居左tableContent.setTitleAlignment(HorizontalAlignment.LEFT);// 前两列的每一列,合并单元格tableContent.setMergeBeforeColNums(2);return tableContent;}/*** 创建第三个表格* @return*/private TableContent createSheetTable03() {TableContent tableContent = new TableContent();tableContent.setTitle("第三个表格:合并复杂的单元格");// 创建一个5行5列的表格int rowNum = 5, colNum = 5;CellContent[][] table = new CellContent[rowNum][colNum];table[0] = new CellContent[]{new CellContent.Builder().cellValue("用例").builder(),new CellContent.Builder().cellValue("产品1").builder(),new CellContent.Builder().cellValue("产品1").builder(),new CellContent.Builder().cellValue("产品2").builder(),new CellContent.Builder().cellValue("产品2").builder(),};table[1] = new CellContent[]{new CellContent.Builder().cellValue("用例").builder(),new CellContent.Builder().cellValue("版本").builder(),new CellContent.Builder().cellValue("数值").builder(),new CellContent.Builder().cellValue("版本").builder(),new CellContent.Builder().cellValue("数值").builder()};table[2] = new CellContent[]{new CellContent.Builder().cellValue("caseName-1").builder(),new CellContent.Builder().cellValue("v1.1").builder(),new CellContent.Builder().cellValue("200").builder(),new CellContent.Builder().cellValue("v1.2").builder(),new CellContent.Builder().cellValue("210").builder(),};table[3] = new CellContent[]{new CellContent.Builder().cellValue("caseName-2").builder(),new CellContent.Builder().cellValue("v0.1").builder(),new CellContent.Builder().cellValue("10").builder(),new CellContent.Builder().cellValue("v0.2").builder(),new CellContent.Builder().cellValue("11").builder(),};table[4] = new CellContent[]{new CellContent.Builder().cellValue("caseName-3").builder(),new CellContent.Builder().cellValue("v1.5").builder(),new CellContent.Builder().cellValue("0.3").builder(),new CellContent.Builder().cellValue("v1.5").builder(),new CellContent.Builder().cellValue("0.5").builder(),};tableContent.setTable(table);// 添加标题颜色tableContent.setTitleBGColor(new MyCellColor(153, 255, 153));// 设置列宽tableContent.setColumnWidthsBase256(new int[]{20, 20, 20, 20, 20});// 设置标题居左tableContent.setTitleAlignment(HorizontalAlignment.LEFT);// 指定要合并的单元格的范围// 某一个表格, 第1行到第2行, 第1列到5列。进行合并单元格tableContent.setRowRange(Range.<Integer>closed(1, 2));tableContent.setColRange(Range.<Integer>closed(1, 5));return tableContent;}
四、分析代码
完整的代码:mypoi-excel
4.1 几个重要的JavaBean:
ExcelContent
:代表excel的所有内容数据,里面包含多有sheet页内容;ExcelSheetContent
:代表一个sheet页的内容,一个sheet页里面可以有多个不同“行数*列数”的二维表格;TableContent
:代表sheet页中,一个“行数*列数”的二维表格;- CellContent:单元格的内容;
- MyCellColor:单元格的背景颜色,基于rgb三原色;
4.2 工具类的调用入口
工具类的调用入口为:MyExcelUtil.createNewExcelWriteContent(excelContent, excelFilePath)
。
传入两个参数:
excelContent
:就是ExcelContent
对象。excelFilePath
:要生成的excel文件路径。文件所在的文件夹路径必须存在。如果文件已经存在会被删除后重建。
五、更多实用的工具类
作者会不断总结出更多实用的Java开发工具类,可以在这里看到:Java开发中总结的非常实用的工具代码。
Java工具总结:将数据内容写入excel文件相关推荐
- 使用java在后台将数据导出为excel文件
本文主要讲的是怎么使用java将数据导出为Excel文件,xls格式的. 例如:我从前台查询到的数据,要把数据进行导出为excl格式的文件.需要将前台的查询条件(数据)传递到后台,后台拿到数据,写sq ...
- 有选择读取word表格中的数据并写入excel文件中
最近学院要举行科技报告会活动,许多同学积极参与,交了许多报名表到我这里,而我需要将这些信息进行汇总,整理出一个excel表格,看着一个个word文件放在我的工作文件夹中头发发麻,这一个个的整理好麻烦, ...
- 利用python将txt文件中的内容写入Excel文件中
Python是一个强大的语言,解决这点问题非常简单. 首先我们先下载两个包,xlrd,xlwt分别可实现对excel文件的读和写操作. 接下来详见代码: 1.从txt里写入excel文件 # codi ...
- Python将Word文件中的内容写入Excel文件
在日常办公中我们经常需要将word文件中的数据写入Excel中,如果是手动一个一个进行复制粘贴,那将会非常的耗时且繁琐! 遇到这种问题我们首先想到就是利用编程解决,今天我分享一个word转excel的 ...
- java 将整型数组内容写入txt文件_Java自学-I/O 字节流
Java 字节流 InputStream OutputStream InputStream字节输入流 OutputStream字节输出流 用于以字节的形式读取和写入数据 步骤 1 : ASCII码 所 ...
- POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表
POI 简介: POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能. ...
- Python将Excel文件内容写入Word文件
在日常办公中我们经常需要将Excel文件中的数据写入Word中,如果是手动一个一个进行复制粘贴,那将会非常的耗时且繁琐! 遇到这种问题我们首先想到就是利用b编程解决,今天我分享一个excel转word ...
- xlsxwriter写行合并_使用xlsxwriter将pandas数据框写入excel并包含“write-rich”字符串格式...
以下是可复制的,并产生所需的输出. import xlsxwriter, pandas as pd workbook = xlsxwriter.Workbook('pandas_with_rich_s ...
- python爬虫爬取彩票中奖数字,简单计算概率并写入Excel文件中
一.爬取网页数据所使用到的库 1.获取网络请求requests.BeautifulSoup2.写入excel文件openpyxl.pprint.column_index_from_string注意co ...
最新文章
- WinForm界面开发之 启动界面
- 【错误记录】Groovy 函数拦截调用 invokeMethod 导致栈溢出 ( java.lang.StackOverflowError )
- 「网络流24题」 12. 软件补丁问题
- redis 失效时间单位是秒还是毫秒_Redis 事务与过期时间详细介绍
- Understanding Spring Web Application Architecture: The Classic Way--转载
- Python 程序开发90个注意事项
- Quartus II11.0安装教程
- 复制中含有非法字符导致的错误
- 用装饰器设计模式装饰
- android8.0学习(1)---Android Treble 概述
- matlab norm函数使用_「matlabnorm」matlab中norm函数的用法 - 金橙教程网
- Win10下ImageAI-gpu(tensorflow-gpu)环境安装(cuda及cuDNN自动安装)及实时对象检测
- 插值算法(数学建模学习)
- 分治法——最大子列和问题
- 什么是 MySQL 索引?
- jena mysql_使用Jena将本体存入MySQL
- 百度地图ModuleNotFoundError: No module named ‘aip‘
- 微信小程序实现打开并下载服务器上面的pdf文件到手机
- pmos低电平驱动_MOS管驱动电路总结
- 什么是信令?什么是信令网?(转)
热门文章
- unity3d插入android有米广告
- 生活痛点与不怕犯错--用精益思想塑造创新型组织
- 指南:在 linux 下的 Oracle Database 11g 中安装 Oracle Enterprise Manager 10g Grid Control 第 5 版
- CISSP认证流程1
- 游戏乱码解决软件 NTLEA
- 麦克风的计算机英语词汇,英语词汇,直播带货的行业术语,非常火!
- test STM32F407 ETH RMII
- Unity5.6.4f1 配置WebGL教程
- CAN-TP 网络层参数解析(N_Ar,N_As,STmin,BS等)
- 基于Android的游戏资讯APP设计