2013-01-24 29 views
5

Tôi đã giải quyết được hầu hết vấn đề. Tôi có thể lặp qua các trang tính, tôi có thể tạo tệp văn bản và ghi vào đó. Vấn đề duy nhất tôi gặp phải là trích xuất văn bản hoặc các giá trị từ mỗi trang tính. Dưới đây là mã tôi có, nhưng nó chỉ ném một đối tượng trên mỗi trang tính và viết những từ đó vào tệp văn bản của tôi thay vì các giá trị thực tế.Lặp lại các bảng tính Excel và lưu văn bản vào một tệp TXT với C#

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

Còn gì khác nữa? Tôi nên chỉ ra tôi là một lập trình viên mới bắt đầu.

Dưới đây là đoạn code tôi có cho đến nay:

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

Bất kỳ ý tưởng? Cảm ơn!

Trả lời

3

Something như thế này, không được kiểm tra. Xem 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! Vì vậy, tôi cũng cần phải lặp lại các hàng và cột! Gotcha. Tôi đang thử nghiệm điều này ngay lập tức, cảm ơn! – sergeidave

+0

Phần '.Value2' không hoạt động. Nhưng bắt đầu từ gợi ý của bạn, tôi thấy rằng bạn có thể lặp qua các ô có báo cáo 'foreach' như sau: \t 'foreach (Excel.Worksheet sheet in ThisWkBook.Worksheets) \t { \t \t foreach (Excel.Range thisRow in sheet .UsedRange.Rows) \t \t { \t \t foreach (Excel.Range thisCell trong thisRow.Columns) \t \t { \t \t \t sw.Write (thisCell.Value + " "); \t \t} \t \t sw.WriteLine(); \t \t} 'Bạn có muốn cập nhật câu trả lời của mình để tôi có thể chọn câu trả lời cuối cùng không? – sergeidave

1

Bạn cần phải nhận được dữ liệu fron bảng, ví dụ:

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

Điều này hướng tôi đi đúng hướng (nó thực sự là 'Phạm vi [" C5 "]', có dấu ngoặc vuông). Cảm ơn! – sergeidave

+0

Rất vui được giúp đỡ! Cảm ơn lời khuyên, Im nhiều hơn từ VB.Net. : P – SysDragon

Các vấn đề liên quan