2015-02-06 11 views
5

Ich verwende csharp, um Daten in Excel-Blatt in 7 Spalten einzufügen. Die Schnittstelle dieses Programms erlaubt Benutzern, 7 Checkboxen auszuwählen. Wenn sie alle 7 auswählen, haben alle 7 Spalten in spreadhseet Daten, wenn sie ein Kontrollkästchen auswählen, dann hat nur eine Spalte Daten. Ich habe eine for-Schleife, die prüft, ob Daten da sind, wenn keine Daten existieren, möchte ich diese Spalte in epplus entfernen. Hier ist eine vorherige Diskussion zu diesem Thema How can I delete a Column of XLSX file with EPPlus in web app Es ist ruhig alt, also möchte ich nur überprüfen, ob es einen Weg gibt, dies zu tun. Oder, gibt es eine Möglichkeit, epplus Excel-Blatt auf Microsoft Interop Excel Blatt zu werfen und einige Operationen durchzuführen.So entfernen Sie eine Spalte aus Excel-Blatt in epplus

Derzeit Ich habe Code wie folgt:

for(int j=1; j <= 9; j++) //looping through columns 
{ 
int flag = 0; 
for(int i = 3; i <= 10; i++) // looping through rows 
{ 
    if(worksheet.cells[i, j].Text != "") 
    { 
     flag ++; 
    } 
} 
if (flag == 0) 
{ 
    worksheet.column[j].hidden = true; // hiding the columns- want to remove it 
} 
} 

Können wir so etwas wie:

Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
xlApp = worksheet; (where worksheet is epplus worksheet) 

Antwort

8

Verwenden Sie EPPlus 4? Die Möglichkeit, Spalten einzufügen und zu löschen, wurde mit dem neuen von ihnen implementierten Cell Store-Modell hinzugefügt. So können Sie jetzt so etwas tun:

[TestMethod] 
public void DeleteColumn_Test() 
{ 
    //http://stackoverflow.com/questions/28359165/how-to-remove-a-column-from-excel-sheet-in-epplus 

    var existingFile = new FileInfo(@"c:\temp\temp.xlsx"); 
    if (existingFile.Exists) 
     existingFile.Delete(); 

    //Throw in some data 
    var datatable = new DataTable("tblData"); 
    datatable.Columns.Add(new DataColumn("Col1")); 
    datatable.Columns.Add(new DataColumn("Col2")); 
    datatable.Columns.Add(new DataColumn("Col3")); 

    for (var i = 0; i < 20; i++) 
    { 
     var row = datatable.NewRow(); 
     row["Col1"] = "Col1 Row" + i; 
     row["Col2"] = "Col2 Row" + i; 
     row["Col3"] = "Col3 Row" + i; 
     datatable.Rows.Add(row); 
    } 

    using (var pack = new ExcelPackage(existingFile)) 
    { 

     var ws = pack.Workbook.Worksheets.Add("Content"); 
     ws.Cells.LoadFromDataTable(datatable, true); 
     ws.DeleteColumn(2); 

     pack.SaveAs(existingFile); 
    } 
} 
+1

Danke für die Antwort. Ich benutze Epplus 3.1.3.0. Ich werde versuchen, einen Weg zu finden, um es auf Version 4 zu aktualisieren und dann Ihre Lösung zu versuchen. Prost. – sanmis

+0

Funktioniert gut für epplus4. – sanmis

+0

@sanmis Cool, froh, dass es für Sie funktioniert. Sie haben der Version 4 eine Menge guter Sachen hinzugefügt. Denken Sie nur daran, die Frage als beantwortet zu markieren, um sie zu schließen. – Ernie

Verwandte Themen