[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复制功能

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值