2012-09-21 204 views
3

可能重複:
How to export DataTable to Excel in C#導出數據表到Excel

我已經包括在我的項目TemplateExcel,我想我的數據表中導出到Excel中,我想複製並保存此無處不在的數據模板我想保存它,我該怎麼做?

+0

所以你有一個DataTable,並且你想把它導出到Excel工作表? – JMK

+0

什麼類型的數據庫?如果它是SQL Server,那麼爲什麼不使用DTS http://technet.microsoft.com/en-us/library/cc917688.aspx或者其他新的名稱? – Liam

+0

我們需要更多細節來幫助你! – Coffee

回答

0

1您可以使用此文章 - 基於RenderControl,可你的綁定網格工作

鏈接:http://www.codeproject.com/Tips/344604/Export-to-EXCEL-from-Datatable-in-Csharp-Net

2您可以基於你的研究與開發上表

鏈接:http://www.codeproject.com/Tips/406704/Export-DataTable-to-Excel-with-Formatting-in-Cshar

+0

hmm..workbook.SaveAs(@ C:\測試\ whatever123.xlsx「); 方法SaveAs不能只有一個參數:/ –

+0

感謝球員,問題是sloved :) –

+0

我很樂意幫助你Gëzim –

6

你可以通過Excel Interop這樣做:

using System; 
using System.Data; 
using System.Runtime.InteropServices; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace ConsoleApplication3 
{ 
    class Program 
    { 
     static void Main() 
     { 
      Excel.Application application = new Excel.Application(); 
      Excel.Workbook workbook = application.Workbooks.Add(); 
      Excel.Worksheet worksheet = workbook.Sheets[1]; 

      DataTable dataTable = new DataTable(); 
      DataColumn column = new DataColumn("My Datacolumn"); 

      dataTable.Columns.Add(column); 
      dataTable.Rows.Add(new object[] {"Foobar"}); 

      var columns = dataTable.Columns.Count; 
      var rows = dataTable.Rows.Count; 

      Excel.Range range = worksheet.Range["A1", String.Format("{0}{1}", GetExcelColumnName(columns), rows)]; 

      object[,] data = new object[rows,columns]; 

      for (int rowNumber = 0; rowNumber < rows; rowNumber++) 
      { 
       for (int columnNumber = 0; columnNumber < columns; columnNumber++) 
       { 
        data[rowNumber, columnNumber] = dataTable.Rows[rowNumber][columnNumber].ToString(); 
       } 
      } 

      range.Value = data; 

      workbook.SaveAs(@"C:\test\whatever123.xlsx"); 
      workbook.Close(); 

      Marshal.ReleaseComObject(application); 
     } 

     private static string GetExcelColumnName(int columnNumber) 
     { 
      int dividend = columnNumber; 
      string columnName = String.Empty; 
      int modulo; 

      while (dividend > 0) 
      { 
       modulo = (dividend - 1) % 26; 
       columnName = Convert.ToChar(65 + modulo).ToString() + columnName; 
       dividend = (int)((dividend - modulo)/26); 
      } 

      return columnName; 
     } 
    } 
} 

我在這裏所做的是創建一個System.Data.DataTable對象,填充一些數據,然後將其導出到Excel。這需要清理,添加錯誤處理,重構等,但基礎在那裏。

對於GetExcelColumnName方法歸功於Graham