2016-08-16 682 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行和一切移。