2016-08-16 680 views
3

我目前正在处理一个Excel文件,该文件的前导行有我不需要的信息。这些额外的行也混乱导入下面的标题行中的数据。所以我试图删除它们以处理数据。C#EPPlus从excel表删除行

using (var pack = new ExcelPackage(myFileInfo)) 
{ 
    // Should return the sheet name 
    var ws = pack.Workbook.Worksheets.FirstOrDefault(); 
    // Should Delete rows 1-5 and shift up the rows after deletion 
    ws.DeleteRow(1,5,true); 
} 

我在想上面的东西会有用,但是我没有太多的成功。

目标是删除第1-5行,将其余数据向上移(也许合并会起作用?),然后将其转换为数据表。

任何人都有提示的提示或资源从我的Excel工作表中删除行(之前移动它变成一个数据表,因为这是在问题发生时)

+0

听起来像你需要使用foreach的初学者..做一个谷歌搜索'C#EPPLUS从excel删除行' – MethodMan

+0

@MethodMan我不认为我需要使用一个Foreach自[docs](http: //www.nudoq.org/#!/Packages/EPPlus/EPPlus/ExcelWorksheet/M/DeleteRow)表明我可以删除并且向上移动。 – confusedandamused

+1

然后在代码中的哪个位置使用适当的方法重载从[EPLUS Documentation DeleteRow方法]中删除行(http://www.nudoq.org/#!/Packages/EPPlus/EPPlus/ExcelWorksheet/M/DeleteRow ) – MethodMan

回答

1

的代码,你拥有了它会删除第5行,但您还需要对修改后的文件进行一些操作。你可以在适当的位置与保存:

pack.Save(); 

或保存到一个新位置:

pack.SaveAs(new FileInfo(outputFilePath)); 

我已上传一个完整的例子here

static void Main(string[] args) 
{ 
    var myFileInfo = new FileInfo("Demo.xlsx"); 
    using (var pack = new ExcelPackage(myFileInfo)) 
    { 
     var ws = pack.Workbook.Worksheets.FirstOrDefault(); 
     ws.DeleteRow(1, 5, true); 
     pack.SaveAs(new FileInfo("output.xlsx")); 
    } 
} 

如果您构建和运行该解决方案可以看到它在输入文件(Demo.xlsx)中将演示文件从此转换为:

input file screengrab

此在输出文件:

output file screengrab

其中移除了前5行和一切移。