poi处理excel基本操作时写的工具类
1.复制单元格
1 ...
2 public static void copyCell(Workbook wb, Cell srcCell, Cell distCell, boolean copyValueFlag) {
3 //新建单元格样式
4 CellStyle newStyle = wb.createCellStyle();
5 //获取来源的单元格样式
6 CellStyle srcStyle = srcCell.getCellStyle();
7 //将来源的单元格样式克隆到新的单元格样式
8 newStyle.cloneStyleFrom(srcStyle);
9 //样式
10 newStyle.cloneStyleFrom(newStyle);
11 distCell.setCellStyle(newStyle);
12 //克隆单元格的评论
13 if (srcCell.getCellComment() != null) {
14 distCell.setCellComment(srcCell.getCellComment());
15 }
16 // 不同数据类型处理
17 CellType srcCellType = srcCell.getCellTypeEnum();
18 distCell.setCellType(srcCellType);
19 if (copyValueFlag) {
20 if (srcCellType == CellType.NUMERIC) {
21 if (DateUtil.isCellDateFormatted(srcCell)) {
22 distCell.setCellValue(srcCell.getDateCellValue());
23 } else {
24 distCell.setCellValue(srcCell.getNumericCellValue());
25 }
26 } else if (srcCellType == CellType.STRING) {
27 distCell.setCellValue(srcCell.getRichStringCellValue());
28 } else if (srcCellType == CellType.BLANK) {
29
30 } else if (srcCellType == CellType.BOOLEAN) {
31 distCell.setCellValue(srcCell.getBooleanCellValue());
32 } else if (srcCellType == CellType.ERROR) {
33 distCell.setCellErrorValue(srcCell.getErrorCellValue());
34 } else if (srcCellType == CellType.FORMULA) {
35 distCell.setCellFormula(srcCell.getCellFormula());
36 } else {
37 }
38 }
39 }
40 ...
2.行复制
1 ...
2 /**
3 * 行复制功能
4 *
5 * @param wb 要复制到的Workbook
6 * @param fromRow 复制到的行
7 * @param toRow 来源的行
8 * @param copyValueFlag true的时候赋值里面的值
9 * @return [返回类型说明]
10 * @author 龙谷情
11 * @date 2020/6/9 19:42
12 * @exception/throws [异常类型] [异常说明]
13 * @since [v1.0]
14 */
15 public static void copyRow(Workbook wb, Row fromRow, Row toRow, boolean copyValueFlag) {
16 toRow.setHeight(fromRow.getHeight());
17 for (Iterator cellIt = fromRow.cellIterator(); cellIt.hasNext(); ) {
18 Cell tmpCell = (Cell) cellIt.next();
19 Cell newCell = toRow.createCell(tmpCell.getColumnIndex());
20 //调用单元格赋值方法
21 copyCell(wb, tmpCell, newCell, copyValueFlag);
22 }
23 Sheet worksheet = fromRow.getSheet();
24 //获取合并单元格的数量
25 int mergedRegionsNum = worksheet.getNumMergedRegions();
26 for (int i = 0; i < mergedRegionsNum; i++) {
27 CellRangeAddress cellRangeAddress = worksheet.getMergedRegion(i);
28 if (cellRangeAddress.getFirstRow() == fromRow.getRowNum()) {
29 CellRangeAddress newCellRangeAddress = new CellRangeAddress(toRow.getRowNum(), (toRow.getRowNum() +
30 (cellRangeAddress.getLastRow() - cellRangeAddress.getFirstRow())), cellRangeAddress
31 .getFirstColumn(), cellRangeAddress.getLastColumn());
32 worksheet.addMergedRegionUnsafe(newCellRangeAddress);
33 }
34 }
35 }
36 ...
poi处理excel基本操作时写的工具类的更多相关文章
- 30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验?
30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验? 前言 在本篇文章当中首先给大家介绍三个工具Semaphore, CyclicBa ...
- poi报表导出4.1.0版本工具类 导出并下载
这一段时间,由于项目上线基于稳定,所以我这边在基于我们一期迭代的分支上优化一部分我们之前没有做的功能,报表导出.本身之前用的是3.5的版本,但是由于同事要写导入,写的代码只有4.1.0的版本支持,所以 ...
- 自写Date工具类
以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类.因此整理出经常使用的一些转换,用作记录,以便以后 ...
- 写shell工具类,一个常用实例
简述: 当我们常用到某些指令时,我们就需要将这个命令进行封装.封装的设计和扩展,因人而异.但为了每个人都能够了解到这个命令,常需要写出这个类的help. 关键字: 函数.getopts 函数 通过自定 ...
- java POI 导出到word文档 (附工具类)
1,导入poi相关依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-o ...
- 解决java依赖poi导出Excel表时,没有出现下载提示的问题
转自:https://blog.csdn.net/jinchunzhao123/article/details/88626077 浏览器响应: 而且进入断点调试,所有的数据都执行了就是没有下载提示.而 ...
- java中IO写文件工具类
以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足 ...
- less循环写css工具类
//margin-right=================.mr(100); .mr(@n, @i: 1) when (@i =< @n) { .mr-@{i} { margin-right ...
- C#写日志工具类
代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System ...
- 含有多个main方法的jar包的运行方式(适用于用java写的工具类)
如果一个jar中含有多个主程序,而你没有配置默认主程序,或者想要运行指定主程序,则可以通过如下命令执行: Java -cp example03-1.0-SNAPSHOT.jar cn.vicky.ex ...
随机推荐
- Python 类型检查与类型注解:mypy 与 typing 深度解析
Python 类型检查与类型注解:mypy 与 typing 深度解析 在 Python 动态类型语言中,mypy 和 typing 是两个提升代码健壮性的核心工具.它们通过静态类型检查与类型注解,帮 ...
- SynchronousQueue底层实现原理剖
一.SynchronousQueue底层实现原理剖 SynchronousQueue(同步移交队列),队列长度为0.作用就是一个线程往队列放数据的时候,必须等待另一个线程从队列中取走数据.同样,从队列 ...
- memcached DRDOS攻击实验
memcached DRDOS攻击实验 一.前提 关于drdos DRDoS(Distributed Reflection Denial of Service) 指的是利用IP Spoofing技术, ...
- vscode配置xdebug断点调试thinkphp
vscode配置xdebug断点调试thinkphp其实和配置其他php框架的断点调试一样,步骤如下: 下载xdebug,重命名为php_xdebug.dll并移动到php.ini目录: (不知道下载 ...
- 里程碑:MCP星球作为国内首个中文MCP社区和MCP工具平台,突破7000个MCP服务!
随着人工智能技术的快速发展,越来越多的开发者开始使用模型上下文协议(Model Context Protocol,简称MCP)来优化大模型与外部工具的交互.作为首个最大的中文MCP工具市场,MCP星球 ...
- 11.23DP进阶总结
例.1 Luogu-P1387最大正方形 按如下复杂度来分析 O(\(n^6\)) O(\(n^5\)) O(\(n^3\)) O(\(n^2\log n\)) O(n^2) O(\(n^6\)) 最 ...
- 我与 ChatGPT 讨论了面向对象语言 中,关于动态调用的问题
你好,支持面向对象的语言中,"方法表" 是用来处理什么的? 在面向对象的语言中,"方法表"通常指一个类或对象中定义的方法列表.这些方法定义了该类或对象可以做什么 ...
- 腾讯出品!这款Markdown神器让你码字效率翻倍,双模式编辑太香了!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 由腾讯开源的CherryMarkdown编辑器,集思维导图式大纲写作与专业分屏模式于一身,支 ...
- 工具 | ysoSimple
0x00 简介 ysoSimple是一款简易的Java漏洞利用工具,集成Java反序列化,Hessian反序列化,XStream反序列化,SnakeYaml反序列化,Shiro550,JSF反序列化, ...
- 换个方式用C#开发微信小程序
pre { overflow-y: auto; max-height: 300px } 前一阵子帮朋友开发个微信小程序,一开始使用Wechat Devtools开发,实在受不了转用uniapp开发 ...