2012-06-23 25 views

答えて

8

はちょうどあなたが... vb.netのようないくつかのいずれか感謝し、私は細かい作業のために、すべての

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

感謝!素晴らしい例。 :) – asuciu

4

データテーブルから.csv(カンマ区切り値ファイル)を保存できます。このファイルをExcelで開くことができます。

さらに、WPFでもWinformsでも、その変換コードはあなたの言語、つまりC#で書かれており、WPFまたはWinformsに固有ではないため、両方の変換が同じです。

2

のために、それは良く見えるようにするには?

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 

サブExcelFile(DataTableのとしてByVal DT)

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