深度拷贝Excel文件中sheet工作簿
使用POI复制sheet工作簿,网上的绝大多数教程都是挨个单元格复制,由于我的业务需要深度拷贝,以下是复制工作簿到新工作簿的代码实现:
/**
* 复制sheet工作簿
*
* @param sourceFile 源文件
* @param sheetIndex 要复制sheet的索引
* @param newSheetName 复制sheet后的新名称
* @throws IOException 流错误
*/
public static void copySheet(File sourceFile, Integer sheetIndex, String newSheetName) throws IOException {//一定要用文件输入流最为参数加到workbook,将文件直接作为参数加入workbook会报错 InputStream sourceIn = new FileInputStream(sourceFile);XSSFWorkbook sourceWorkbook = new XSSFWorkbook(sourceIn);//poi提供了可以不加的新名称的方法XSSFSheet targetSheet = sourceWorkbook.cloneSheet(sheetIndex, newSheetName);//将文件一定要转为输出流,因为克隆的sheet是在workbook对象中,没有在文件中,需要workbook写入输出流//修改workbook后,一定要记得将work重新写入文件的输出流中,是不是源文件都可以FileOutputStream fileOut = new FileOutputStream(sourceFile);sourceWorkbook.write(fileOut);fileOut.flush();fileOut.close();sourceWorkbook.close();
}
注意:克隆出来的sheet表格不会克隆Excel顶端标题行,需要自己指定,具体代码如下所示:
//作用是将excel的各种设置放到XSSFName对象中
XSSFName name1 = workbook.createName();
//顶端标题行的标志是"_xlnm.Print_Titles"
name1.setNameName("_xlnm.Print_Titles");
//sheet工作簿名称中含有"-"字符,Excel会将sheet工作簿名称进行切割,所以需要将sheet工作簿名称放到单引号中,38、39代表标题行的行号,
name1.setRefersToFormula("'20TR01001TR-2-1-1_D'!$38:$39");
//可以设置,也可以不设置,1代表sheet工作簿的序号,在上一行代码中已经指明了sheet工作簿
name1.setSheetIndex(1);
深度拷贝Excel文件中sheet工作簿相关推荐
- Python pandas把多个DataFrame对象写入Excel文件中同一个工作表
问题描述: 在使用pandas进行数据分析和处理时,需要把相同的DataFrame对象中的数据按顺序先后写入同一个Excel文件中的同一个工作表中,纵向追加. 方法一: 数据量小,把所有DataFra ...
- EasyExcel获取excel文件中sheet页总数,及对应sheet页名称及下标
问题: 多工作表excel文件读取,获取文件中总共有多少个sheet页,及获取对应sheet页名称 代码 import com.alibaba.excel.EasyExcel; import com. ...
- Python+pandas把多个DataFrame对象写入Excel文件中同一个工作表
推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年3月第6 ...
- EXCEL VBA创建sheet/工作簿
1.需要创建以地市命名的系列sheet,但不想手动创建改名. 代码实现如下: Sub SheetAdd()Dim i As Long'定义一个长整型变量Sheets.Add After:=Sheets ...
- 批量更改Excel文件中大量工作表的内容(修改公司一千多份excel表格)
目录标题 应用场景 更改的表格 详细介绍openpyxl 创建工作簿 写工作薄 读工作薄 使用公式 合并/取消合并单元格 插入图像 折叠(轮廓) 使用 Pandas 和 NumPy 插入和删除行和列, ...
- 超过一天的文件_一键合并多个excel文件至同一工作表!
问题 小文是一个文艺青年,她从豆瓣上收集了很多种书籍的信息,并将书籍信息按照书籍分类创建了很多个excel文件,有一天,她突然想把这些不同分类的excel文件合并到一个工作表里,那么问题来了,如何快速 ...
- 【知识兔】自学Excel之2:工作簿操作
工作簿是Excle的工作区域,是用户使用Excel进行操作的载体,一个工作簿中包含多个工作表,工作表是由若干个行和列组成的二维表格. 工作簿的主要类型有:普通工作簿(*.xlsx),97-2003工作 ...
- python 读excel中的sheet_python读取excel文件中所有sheet表格
sales: store: """ (1)用load_workbook函数打开excel文件,返回一个工作簿对象 (2)用工作簿对象获取所有的sheet (3)第一个fo ...
- 【办公自动化实例】使用python将多个excel文件中的多个sheet表合并到一个表内
文章目录 一.需求 二.处理方式 三.代码实现 一.需求 将多个excel文件中的多个sheet表合并到一个工作簿内,参考例子如图: 二.处理方式 1.通过os模块遍历文件,提取获取xlsx文件的路径 ...
最新文章
- bzoj2961 共点圆 (CDQ分治, 凸包)
- java自定义异常及异常的抛出
- Map、Set、List简介
- 【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
- 5、kafka的操作
- Git-将已有的项目转换为GIT项目托管到 GITHUB 仓库
- 交换两个数组 差最小 java_如何交换两个等长整形数组使其数组和的差最小(C和java实现)...
- 页面库无法捕获到Added事件?
- Unity3D之NGUI基础2:使用NGUI
- a - 数据结构实验之串一:kmp简单应用_数据结构(C语言版)_笔记_3
- java byte数组与String互转
- SQL:一条SQL的查询结果作为另一条SQL的查询条件
- jmeter 入门到精通
- 用HTML5为你的网页添加音效(兼容Firefox 3.5+, IE 6-9, Safari 3.0+, Chrome 3.0+, Opera 10.5+)
- PyTorch深度学习(B站刘二大爷)第九讲作业 Otto Group Product Classification
- [转]成功=狼+狐狸+豹子
- Java之BlockingQueue
- 李宏毅hw4,训练+调优
- STM32 输入捕获测量脉冲周期/频率
- 多线程 4——线程通信、线程池、定时器