2013-01-24 73 views
5

我有大部分解決了這個問題的。我可以遍歷工作表,我可以創建文本文件並寫入它。我遇到的唯一問題實際上是從每張紙上提取文本或值。下面是我的代碼,但它只是拋出每個工作表一個對象,並寫那些話在我的文本文件,而不是實際值。遍歷Excel工作表,並保存成文本TXT文件用C#

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

我還缺少什麼? 我應該指出我是一名初學者程序員。

這裏是我到目前爲止的代碼:

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

任何想法?謝謝!

回答

3

這樣的事情,沒有測試。請參閱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

啊!所以我需要遍歷行和列!疑難雜症。我正在測試這個,謝謝! – sergeidave

+0

'.Value2'部分不起作用。但是從你的建議開始,我發現,你可以通過使用「的foreach」語句的細胞如下循環:\t'的foreach(Excel.Worksheet片thisWkBook.Worksheets) \t { \t \t的foreach(Excel.Range thisRow在片.UsedRange.Rows) \t \t { \t \t的foreach(Excel.Range的ThisCell在thisRow.Columns) \t \t { \t \t \t sw.Write(thisCell.Value +「「); \t \t} \t \t sw.WriteLine(); \t \t}'你想更新你的答案,所以我可以選擇它作爲最後的答案? – sergeidave

1

你需要獲取數據的弗朗片,例如:

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

這表明我指向了正確的方向(它實際上是'Range [「C5」],括號)。謝謝! – sergeidave

+0

很高興幫助!感謝您的建議,我更多來自VB.Net。 :P – SysDragon

相關問題