2013-01-24 4 views
5

Ich habe das meiste Problem gelöst. Ich kann die Arbeitsblätter durchlaufen, ich kann die Textdatei erstellen und darauf schreiben. Das einzige Problem, das ich habe, ist tatsächlich den Text oder die Werte aus jedem Blatt zu extrahieren. Unten ist der Code, den ich habe, aber es wirft nur ein Objekt pro Arbeitsblatt und schreibt diese Wörter in meine Textdatei anstelle der tatsächlichen Werte.Schleife durch Excel-Arbeitsblätter und speichern Sie Text in eine TXT-Datei mit C#

System.Object[,] 
System.Object[,] 

Was fehlt mir noch? Ich sollte darauf hinweisen, ich bin ein Anfänger Programmierer.

Hier ist der Code, den ich bisher habe:

using (StreamWriter sw = File.CreateText("ExtractedText.txt")) 
{ 
    Excel.Application xlApp = new Excel.Application(); 
    Excel.Workbook thisWkBook = xlApp.Workbooks.Open(thisFile); 

    foreach (Excel.Worksheet sheet in thisWkBook.Worksheets) 
    { 
     sw.WriteLine(sheet.UsedRange.Value); 
    } 
} 

Irgendwelche Ideen? Vielen Dank!

Antwort

3

Etwas Ähnliches, nicht getestet. Siehe http://dontbreakthebuild.com/2011/01/30/excel-and-c-interop-with-net-4-how-to-read-data-from-excel/

using (StreamWriter sw = File.CreateText("ExtractedText.txt")) 
{ 
    var excelApp = new Excel.Application(); 
    var workBook = excelApp.Workbooks.Open(thisFile); 

    foreach (var sheet in workBook.Worksheets) 
    { 
     foreach (var row in sheet.UsedRange.Rows) 
     { 
     foreach (var cell in row.Columns) 
     { 
      sw.Write(cell.Value + " "); 
     } 
     sw.WriteLine(); 
     } 
    } 
} 
+0

Ah! Also musste ich auch die Zeilen und Spalten durchlaufen! Erwischt. Ich teste das sofort, danke! – sergeidave

+0

Der '.Value2' Teil hat nicht funktioniert. Aber aus Ihrem Vorschlag beginnt, fand ich, dass Sie eine Schleife durch die Zellen mit 'foreach' Aussagen wie folgt: \t 'foreach (Excel.Worksheet Blatt in thisWkBook.Worksheets) \t { \t \t foreach (Excel.Range thisRow in Bogen .UsedRange.Rows) \t \t { \t \t foreach (Excel.Range Thiscell in thisRow.Columns) \t \t { \t \t \t sw.Write (thisCell.Value + "„); \t \t} \t \t sw.WriteLine(); \t \t} Möchten Sie Ihre Antwort aktualisieren, damit ich sie als endgültige Antwort auswählen kann? – sergeidave

1

Sie müssen die Daten fron das Blatt, zum Beispiel zu bekommen:

sw.WriteLine(sheet.Range["C5"].Value.ToString()); 
+0

Dies weist mich auf die richtige Richtung (es ist eigentlich 'Range [" C5 "]', mit Klammern). Vielen Dank! – sergeidave

+0

Gut zu helfen! Und danke für den Rat, ich bin mehr von VB.Net. : P – SysDragon

Verwandte Themen