使用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工作簿相关推荐

  1. Python pandas把多个DataFrame对象写入Excel文件中同一个工作表

    问题描述: 在使用pandas进行数据分析和处理时,需要把相同的DataFrame对象中的数据按顺序先后写入同一个Excel文件中的同一个工作表中,纵向追加. 方法一: 数据量小,把所有DataFra ...

  2. EasyExcel获取excel文件中sheet页总数,及对应sheet页名称及下标

    问题: 多工作表excel文件读取,获取文件中总共有多少个sheet页,及获取对应sheet页名称 代码 import com.alibaba.excel.EasyExcel; import com. ...

  3. Python+pandas把多个DataFrame对象写入Excel文件中同一个工作表

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年3月第6 ...

  4. EXCEL VBA创建sheet/工作簿

    1.需要创建以地市命名的系列sheet,但不想手动创建改名. 代码实现如下: Sub SheetAdd()Dim i As Long'定义一个长整型变量Sheets.Add After:=Sheets ...

  5. 批量更改Excel文件中大量工作表的内容(修改公司一千多份excel表格)

    目录标题 应用场景 更改的表格 详细介绍openpyxl 创建工作簿 写工作薄 读工作薄 使用公式 合并/取消合并单元格 插入图像 折叠(轮廓) 使用 Pandas 和 NumPy 插入和删除行和列, ...

  6. 超过一天的文件_一键合并多个excel文件至同一工作表!

    问题 小文是一个文艺青年,她从豆瓣上收集了很多种书籍的信息,并将书籍信息按照书籍分类创建了很多个excel文件,有一天,她突然想把这些不同分类的excel文件合并到一个工作表里,那么问题来了,如何快速 ...

  7. 【知识兔】自学Excel之2:工作簿操作

    工作簿是Excle的工作区域,是用户使用Excel进行操作的载体,一个工作簿中包含多个工作表,工作表是由若干个行和列组成的二维表格. 工作簿的主要类型有:普通工作簿(*.xlsx),97-2003工作 ...

  8. python 读excel中的sheet_python读取excel文件中所有sheet表格

    sales: store: """ (1)用load_workbook函数打开excel文件,返回一个工作簿对象 (2)用工作簿对象获取所有的sheet (3)第一个fo ...

  9. 【办公自动化实例】使用python将多个excel文件中的多个sheet表合并到一个表内

    文章目录 一.需求 二.处理方式 三.代码实现 一.需求 将多个excel文件中的多个sheet表合并到一个工作簿内,参考例子如图: 二.处理方式 1.通过os模块遍历文件,提取获取xlsx文件的路径 ...

最新文章

  1. bzoj2961 共点圆 (CDQ分治, 凸包)
  2. java自定义异常及异常的抛出
  3. Map、Set、List简介
  4. 【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
  5. 5、kafka的操作
  6. Git-将已有的项目转换为GIT项目托管到 GITHUB 仓库
  7. 交换两个数组 差最小 java_如何交换两个等长整形数组使其数组和的差最小(C和java实现)...
  8. 页面库无法捕获到Added事件?
  9. Unity3D之NGUI基础2:使用NGUI
  10. a - 数据结构实验之串一:kmp简单应用_数据结构(C语言版)_笔记_3
  11. java byte数组与String互转
  12. SQL:一条SQL的查询结果作为另一条SQL的查询条件
  13. jmeter 入门到精通
  14. 用HTML5为你的网页添加音效(兼容Firefox 3.5+, IE 6-9, Safari 3.0+, Chrome 3.0+, Opera 10.5+)
  15. PyTorch深度学习(B站刘二大爷)第九讲作业 Otto Group Product Classification
  16. [转]成功=狼+狐狸+豹子
  17. Java之BlockingQueue
  18. 李宏毅hw4,训练+调优
  19. STM32 输入捕获测量脉冲周期/频率
  20. 多线程 4——线程通信、线程池、定时器

热门文章

  1. 服务器应用程序不可用,试图在此 Web 服务器上访问的 Web 应用程序当前不可用
  2. 推荐一些Android学习网站
  3. 微信浏览器input关闭键盘后导致页面底部空缺问题
  4. 无功功率、有功功率、视在功率,三者之间的关系
  5. [附源码]java毕业设计亿上汽车在线销售管理系统
  6. C# Button 按钮触发清空textBox控件内容
  7. app测试(二)——常用APP命令
  8. spring cloud集成nacos注册中心、配置中心、服务远程调用
  9. c++十进制转十六进制
  10. 成绩统计(score)