C# NPOI复制多行到其他worksheet中
NPOI 操作excel实现多行数据复制功能
- NPOI 复制多行到其他worksheet中
- 优化内容
- 参考链接,可直接点击:
NPOI 复制多行到其他worksheet中
目前NPOI最新版为Version 2.5.6,需要实现sheet1中的多行数据,复制到sheet2中,目前NPOI未提供直接的函数,寻找多种资源,终于在Stack overflow上找到该问题的解决办法,并对其进行优化,得到如下代码!
转载请注明出处!
优化内容
优化主要包括:
- 增加复制内容中合并单元格处理,即MergeRegion()函数
参考链接,可直接点击:
1.指定行列复制
2.stackoverflow,NPOI 复制范围到另一个工作表
3.中文博客,翻译stackoverflow
/// <summary>/// 复制选定的区域到指定的sheet,用法举例: sheet1中"A1:H47"到sheet2中,则CopyRange("A1:H47",sheet1,sheet2)/// </summary>/// <param name="str_range"></param>/// <param name="sourceSheetname"></param>/// <param name="destinationSheetName"></param>public void CopyRange(CellRangeAddress range, string sourceSheetname, string destinationSheetName){// CellRangeAddress range = CellRangeAddress.ValueOf(str_range);ISheet sourceSheet = Wb.GetSheet(sourceSheetname);ISheet destinationSheet = Wb.GetSheet(destinationSheetName);if(destinationSheet==null){destinationSheet = Wb.CreateSheet(destinationSheetName);}for (var rowNum = range.FirstRow; rowNum <= range.LastRow; rowNum++){IRow sourceRow = sourceSheet.GetRow(rowNum);if (destinationSheet.GetRow(rowNum) == null)destinationSheet.CreateRow(rowNum);if (sourceRow != null){IRow destinationRow = destinationSheet.GetRow(rowNum);for (var col = range.FirstColumn; col < sourceRow.LastCellNum && col <= range.LastColumn; col++){destinationRow.CreateCell(col);CopyCell(sourceRow.GetCell(col), destinationRow.GetCell(col));}}}MergeRegion(sourceSheet, destinationSheet, range.LastRow, range.LastColumn);}/// <summary>/// 复制某一列/// </summary>/// <param name="column"></param>/// <param name="sourceSheetname"></param>/// <param name="destinationSheetName"></param>void CopyColumn(string column, string sourceSheetname, string destinationSheetName){ISheet sourceSheet = Wb.GetSheet(sourceSheetname);ISheet destinationSheet = Wb.GetSheet(destinationSheetName);int columnNum = CellReference.ConvertColStringToIndex(column);var range = new CellRangeAddress(0, sourceSheet.LastRowNum, columnNum, columnNum);CopyRange(range, sourceSheetname, destinationSheetName);}/// <summary>/// 复制单元格/// </summary>/// <param name="source"></param>/// <param name="destination"></param>void CopyCell(ICell source, ICell destination){if (destination != null && source != null){//you can comment these out if you don't want to copy the style ...destination.CellComment = source.CellComment;destination.CellStyle = source.CellStyle;destination.Hyperlink = source.Hyperlink;switch (source.CellType){case CellType.Formula:destination.CellFormula = source.CellFormula; break;case CellType.Numeric:destination.SetCellValue(source.NumericCellValue); break;case CellType.String:destination.SetCellValue(source.StringCellValue); break;case CellType.Boolean:destination.SetCellValue(source.BooleanCellValue); break;case CellType.Blank:destination.SetCellType(CellType.Blank); break;default:break;}}}/// <summary>/// 复制合并单元格/// </summary>/// <param name="sSheet"></param>/// <param name="dSheet"></param>/// <param name="MaxRow"></param>,源sheet中的最大行/// <param name="MaxCol"></param>,源sheet中的最大列private void MergeRegion(ISheet sSheet, ISheet dSheet, int MaxRow = 10, int MaxCol = 10){int sheetMergerCount = sSheet.NumMergedRegions;for (int i = 0; i < sheetMergerCount; i++){if (sSheet.GetMergedRegion(i).MaxRow <= MaxRow && sSheet.GetMergedRegion(i).MaxColumn <= MaxCol)dSheet.AddMergedRegion(sSheet.GetMergedRegion(i));}}
C# NPOI复制多行到其他worksheet中相关推荐
- NPOI导出word,NPOI导出word表格,NPOI复制table表格 XWPFDocument中XWPFTable
NPOI导出word,NPOI导出word表格,NPOI复制table表格 XWPFDocument中XWPFTable 使用NPOI可以对Word中的文本做替换,当遇到表格时,单个表格也可以循环遍历 ...
- js html table转excel文件 js获取(复制 / 粘贴板)的内容js复制table粘贴到excel中
js html table转excel文件 参考资料: 70行代码实现vue+sheetJs导出excel功能 sheetJs的git项目代码 代码太长建议直接粘贴复制 <!DOCTYPE ht ...
- 将磁盘上的一个文本文件的内容复制到另一个文件中
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p198 8.1.2 上级实训内容 [实训内容2]将磁盘上的一个文本文件的内容复制到另一个文件中 #in ...
- 编写程序,在文件file1.dat中存入字符串“good morning”,然后将file1.dat中的内容输出到屏幕上,并复制到文件file2.dat中
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 7.编写程序,在文件file1.dat中存入字符串"good morning ...
- Git Manual / Git使用手册 / Git, GitLab, Git Bash, TortoiseGit (建议全文复制到Word文档中通过导航窗格查看)...
Git使用手册 目录 1 引言 2 Git.GitLab简介 2.1 Git 2.2 GitLab 2.3 Git基本概念 3 运行环境 4 ...
- 百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题
我这边从world 里面复制粘贴图片到编辑器中,它自动给我上传了,但是我是用的第三方的要设置一个token值,我找了很久,也没有找到应该在哪里设置这个上传的参数,如果是点击图片上传,我知道在dialo ...
- DataRow复制一行到另一个DataTable
DataRow复制一行到另一个DataTable 下面两个方法是DataRow复制一行到另一个DataTable的,直接Add会出错"此行已属于另一个表",其实以前就知道怎么做的, ...
- Linux 中如何复制和删除文件夹中的所有文件?
Linux 中如何复制和删除文件夹中的所有文件? 1.复制文件 目标文件目录必须存在 (1) 直接复制 cp /hone/user/temp/test.c /home/user/ (2) 复制并重命名 ...
- Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制
使用shell脚本实现USB设备的加载与文件复制 在Linux操作系统中,如果插入一个USB设备,需要用mount挂载命令才能实现这个设备的加载,下面写一个USB设备挂载与文件复制的Shell程序,程 ...
最新文章
- 【经验】向word中插入格式化的代码块
- c语言实现椭圆曲线算法,椭圆曲线加密算法的C语言设计和实现
- 我来告诉你【Redis】入门 一
- 正则 禁止连续逗号_正则
- linux 磁盘被挂载2个目录,Linux检测并挂载第二块硬盘的步骤
- 理解一下ThreadLocal线程存储---springcloud工作笔记160
- mysql 动态游标 , 实际上不要使用, 因为两个人同时执行会删除了其中一个人的数据...
- Cad二次开发版本集合2000-2022
- C#语言和doNet框架
- google实习面试
- c语言设计程序计算水仙花数,C语言水仙花数算法
- 安卓rom包解包linux,Android rom解包打包工具
- 100天精通Andriod逆向——第3天:真机环境配置
- linux12.12日学习整理(被逼无奈写的博客)
- 翻译:《蛇棋》游戏与算法
- linux java 僵尸进程_Linux 系统中僵尸进程
- DirectX FAQ 翻译(Graphics 部分)
- 七年之痒,很多人迈不过去的槛
- MTK Keypad驱动框架
- VR视频播放器Video Player
热门文章
- 修复受损的Windows账户权限配置
- Word如何实现一级标题汉字,二级标题数字
- linux 打开文件命令
- android弧形左右滑动空间,自定义LayoutManager 实现弧形以及滑动放大效果RecyclerView...
- DevOps系列之 —— 持续开发与集成(五)华为云 DevCloud 代码托管服务及 CloudIDE
- 路由器中的UPnP状态开启跟关闭有什么区别
- 量化交易软件 python_量的解释|量的意思|汉典“量”字的基本解释
- 性能一路“狂飙”,阿里云ECS上新啦
- [POJ 1417] True Liars
- 双目立体视觉数学原理