2013-01-24 15 views
5

Ho risolto gran parte del problema. Posso scorrere i fogli di lavoro, posso creare il file di testo e scriverci sopra. L'unico problema che sto avendo è in realtà l'estrazione del testo o dei valori da ogni foglio. Di seguito è riportato il codice che ho, ma getta solo un oggetto per foglio di lavoro e scrive quelle parole nel mio file di testo anziché i valori effettivi.Passare attraverso i fogli di lavoro Excel e salvare il testo in un file TXT con C#

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

Cos'altro mi manca? Devo sottolineare che sono un programmatore principiante.

Ecco il codice che ho finora:

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); 
    } 
} 

Tutte le idee? Grazie!

risposta

3

qualcosa di simile, non testato. Vedere 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! Quindi avevo bisogno di scorrere anche le righe e le colonne! Gotcha. Lo sto testando subito, grazie! – sergeidave

+0

La parte '.Value2' non ha funzionato. Ma a partire dal vostro suggerimento, ho scoperto che è possibile scorrere le cellule con dichiarazioni 'foreach' come segue: \t 'foreach (foglio Excel.Worksheet in thisWkBook.Worksheets) \t { \t \t foreach (Excel.Range thisRow in lamiera .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} 'Vuoi aggiornare la tua risposta in modo che io possa selezionarla come risposta finale? – sergeidave

1

è necessario per ottenere i dati di fron il foglio, ad esempio:

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

Questo mi indica la direzione giusta (in realtà è 'Intervallo [ "C5"]', con staffe). Grazie! – sergeidave

+0

Felice di aiutare! E grazie per il consiglio, Im più da VB.Net. : P – SysDragon

Problemi correlati