[C#][NPOI系列]搬移数据列和COPY SHEET数据

2024-01-27 12:48

本文主要是介绍[C#][NPOI系列]搬移数据列和COPY SHEET数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通常用NPOI将数据写成EXCEL并导出在前面一些案例中,并不会有太大问题,但是,最近又遇到需要将Excel中某一块

数据或是某一个Row之后的数据中间插入一些空白或是其他值,跟需要把写好数据的Sheet再复制一份出来,基本上这些

透过NPOI都是可以快速达成

搬移数据=插入数据?

这两个我认为其实是相同意思,主要就是在Excel中插入一些列去放入其他数据或是将数据区块分开,例如下图,原本是

连续的数据区块,插入两行空白去区隔数据,当然,除了插入空白数据列外,也是可以在这数据列中去填入一些信息

[] []

原程序代码如下:

DataTable dt = new DataTable();

Data.clsData oo = new Data.clsData();

dt = oo.Getdate1();

HSSFWorkbook hFF = new HSSFWorkbook();

ISheet Sheet = hFF.CreateSheet("Test1");

IRow row1 = Sheet.CreateRow(0);

for (int j = 0; j < dt.Columns.Count; j++)

{

row1.CreateCell(j).SetCellValue("A" + j.ToString());

}

 

for (int i = 0; i < dt.Rows.Count; i++)

{

IRow row = Sheet.CreateRow(i + 1);

for (int j = 0; j < dt.Columns.Count; j++)

{

row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());

 

}

}

假设先把数据都填完,然后只要透过ShiftRows方法去搬移区块,把某一段数据区块搬移后,其实就等于插入了多少列了,

其使用方法参数如下

[]

主要就是告诉ShiftRow方法,你要搬移区块的起始Row的编号,跟结束Row的编号,这样就可以圈选出一个要被搬移的区块

范围。然后,再给定要ShiftRow数,举例来讲,我需要从第六列数据到最后一笔数据的这区块,全部往下Shift两个Row,其

意思就是插入两个空白Row

Sheet.ShiftRows(6, dt.Rows.Count + 1, 2);

这样就可以达到上面插入两个Row效果。若是,中间连续数据集插入其他信息也可以这样做

Sheet.ShiftRows(6, dt.Rows.Count + 1, 2);

row = Sheet.CreateRow(6);

row.CreateCell(0).SetCellValue("我是空白列");

这样就把信息放到这里面了

[]

Copy Sheet

透过NPOI也可以将原本Sheet数据复制出一个Sheet来。通常这样做法在于统计数据或是相关数据变换计算用,只需要将

原本数据变更部分信息看整个统计信息有无太大变异。若是还要重新长一次Sheet也太耗工,不如就将原本Sheet信息复制

一份后,再针对部分需要修正资料进行修正就可以

[]

1.首先,先取得你要CopySheet资料

HSSFWorkbook hFF = new HSSFWorkbook();

HSSFSheet CPS = hFF.GetSheetAt(0) as HSSFSheet;

2.透过CopyTo方法,将取到的Sheet信息进行Copy,在复制部分,可以选择要复制的方式,例如只要把值复制就好,还是连

每个CELL内公式都要复制或是格式是否要复制。

[]

CPS.CopyTo(hFF, "Copy Sheet", true, true);

一行简单程序代码就可以达到Sheet复制功能

这篇关于[C#][NPOI系列]搬移数据列和COPY SHEET数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/650294

相关文章

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

通过ibd文件恢复MySql数据的操作方法

《通过ibd文件恢复MySql数据的操作方法》文章介绍通过.ibd文件恢复MySQL数据的过程,包括知道表结构和不知道表结构两种情况,对于知道表结构的情况,可以直接将.ibd文件复制到新的数据库目录并... 目录第一种情况:知道表结构第二种情况:不知道表结构总结今天干了一件大事,安装1Panel导致原来服务

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete

C# 委托中 Invoke/BeginInvoke/EndInvoke和DynamicInvoke 方法的区别和联系

《C#委托中Invoke/BeginInvoke/EndInvoke和DynamicInvoke方法的区别和联系》在C#中,委托(Delegate)提供了多种调用方式,包括Invoke、Begi... 目录前言一、 Invoke方法1. 定义2. 特点3. 示例代码二、 BeginInvoke 和 EndI

C#中的 Dictionary常用操作

《C#中的Dictionary常用操作》C#中的DictionaryTKey,TValue是用于存储键值对集合的泛型类,允许通过键快速检索值,并且具有唯一键、动态大小和无序集合的特性,常用操作包括添... 目录基本概念Dictionary的基本结构Dictionary的主要特性Dictionary的常用操作

C# winform操作CSV格式文件

《C#winform操作CSV格式文件》这篇文章主要为大家详细介绍了C#在winform中的表格操作CSV格式文件的相关实例,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录实例一实例效果实现代码效果展示实例二实例效果完整代码实例一实例效果当在winform界面中点击读取按钮时 将csv中

在Dockerfile中copy和add的区别及说明

《在Dockerfile中copy和add的区别及说明》COPY和ADD都是Dockerfile中用于文件复制的命令,但COPY仅用于本地文件或目录的复制,不支持自动解压缩;而ADD除了复制本地文件或... 目录在dockerfile中,copy 和 add有什么区别?COPY 命令ADD 命令总结在Doc

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo