2012-06-23 29 views

Trả lời

8

chỉ để làm cho nó có thể nhìn thấy tốt hơn, cho tất cả

Microsoft.Office.Interop.Excel.Application excel = null; 
Microsoft.Office.Interop.Excel.Workbook wb = null; 

object missing = Type.Missing; 
Microsoft.Office.Interop.Excel.Worksheet ws = null; 
Microsoft.Office.Interop.Excel.Range rng = null;  

try 
{ 
    excel = new Microsoft.Office.Interop.Excel.Application(); 
    wb = excel.Workbooks.Add(); 
    ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet; 

    for (int Idx = 0; Idx < dt.Columns.Count; Idx++) 
    { 
     ws.Range["A1"].Offset[0, Idx].Value = dt.Columns[Idx].ColumnName; 
    } 

    for (int Idx = 0; Idx < dt.Rows.Count; Idx++) 
    { // <small>hey! I did not invent this line of code, 
     // I found it somewhere on CodeProject.</small> 
     // <small>It works to add the whole row at once, pretty cool huh?</small> 
     ws.Range["A2"].Offset[Idx].Resize[1, dt.Columns.Count].Value = 
     dt.Rows[Idx].ItemArray; 
    } 

    excel.Visible = true; 
    wb.Activate(); 
} 
catch (COMException ex) 
{ 
    MessageBox.Show("Error accessing Excel: " + ex.ToString()); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("Error: " + ex.ToString()); 
} 
+3

cảm ơn! ví dụ tuyệt vời. :) – asuciu

4

Bạn có thể lưu tệp .csv (Tệp giá trị được phân tách bằng dấu phẩy) từ dữ liệu có thể định giá của bạn. Tệp này sau đó có thể được mở trong Excel.

Hơn nữa: Cho dù đó là WPF hay Winforms, chuyển đổi đều giống nhau bởi vì mã chuyển đổi của nó được viết bằng ngôn ngữ của bạn tức là C# và không dành riêng cho WPF hoặc Winforms.

2

Đối với tôi làm việc tốt cảm ơn bạn ... một số một như vb.net?

Dim excel As Microsoft.Office.Interop.Excel.Application = Nothing 
Dim wb As Microsoft.Office.Interop.Excel.Workbook = Nothing 

Dim missing As Object = Type.Missing 
Dim ws As Microsoft.Office.Interop.Excel.Worksheet = Nothing 
Dim rng As Microsoft.Office.Interop.Excel.Range = Nothing 

Sub ExcelFile (ByVal dt Như DataTable)

Try 
     excel = New Microsoft.Office.Interop.Excel.Application() 
     wb = excel.Workbooks.Add() 
     ws = DirectCast(wb.ActiveSheet, Microsoft.Office.Interop.Excel.Worksheet) 

     For Idx As Integer = 0 To dt.Columns.Count - 1 
      ws.Range("A1").Offset(0, Idx).Value = dt.Columns(Idx).ColumnName 
     Next 

     For Idx As Integer = 0 To dt.Rows.Count - 1 
      ' <small>hey! I did not invent this line of code, 
      ' I found it somewhere on CodeProject.</small> 
      ' <small>It works to add the whole row at once, pretty cool huh?</small> 
      ' YES IT'S COOL Brother ... 
      ws.Range("A2").Offset(Idx).Resize(1, dt.Columns.Count).Value = dt.Rows(Idx).ItemArray 
     Next 

     excel.Visible = True 
     wb.Activate() 
    Catch ex As Exception 
     MessageBox.Show("Error accessing Excel: " & ex.ToString()) 

    End Try 

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