2011-03-17 113 views
2

我需要製作一個程序,將某些數據寫入Excel電子表格。一些基本的名字,姓氏,電話號碼,每行的電子郵件以及每個類別在自己的專欄中。使用C#從Excel電子表格讀取/寫入#

我甚至不知道從哪裏開始。如果有人可以告訴我要引用哪個程序集,也許可以指向一個網站或一本涵蓋通過C#程序寫入/讀取Excel電子表格數據的書籍,這將非常棒。

非常感謝。

回答

0

你爲什麼不創建一個csv文件,將它保存爲xls。本土的excel是必須的嗎?

1

根據複雜的需要程度:

  • 寫逗號分隔值(CSV)的文本文件。 Excel將打開它,但是你不會得到任何格式。
  • 將HTML表寫入文件並將文件命名爲filename.xls。
  • format that Excel can open中寫出一個XML文件。
  • 直接調用Excel並讓它構建電子表格。 (請參閱cherhan的回答)
7

添加對Microsoft.Office.Interop.Excel的引用。

假設你有一個數據倉庫的地方,和你的模型看起來像

class Contact 
{ 
    public string Firstname { get; set; } 
    public string Lastname { get; set; } 
    public string Email { get; set; } 
    public string PhoneNumber { get; set; } 
} 

可將其導入到Excel這樣

Application excelapp = new Application(); 
excelapp.Visible = true; 

_Workbook workbook = (_Workbook)(excelapp.Workbooks.Add(Type.Missing)); 
_Worksheet worksheet = (_Worksheet)workbook.ActiveSheet; 

worksheet.Cells[1, 1] = "First Name"; 
worksheet.Cells[1, 2] = "Last Name"; 
worksheet.Cells[1, 3] = "Email"; 
worksheet.Cells[1, 4] = "Phone Number"; 

int row = 1; 

foreach (var contact in contacts) 
{ 
    row++; 

    worksheet.Cells[row, 1] = contact.Firstname; 
    worksheet.Cells[row, 2] = contact.Lastname; 
    worksheet.Cells[row, 3] = contact.Email; 
    worksheet.Cells[row, 4] = contact.PhoneNumber; 
} 

excelapp.UserControl = true; 

你可以閱讀更多有關Excel互操作圖書館這裏:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel%28v=office.11%29.aspx

+0

謝謝大家,這讓我開始了。 – Aaron 2011-03-17 00:49:36

0

正如cherhan所說,Excel自動化是標準的微軟方法來編程創建電子表格。這種方法的缺點是它使用了一個COM互操作層,因此需要運行代碼的每個服務器都使用Excel(和許可證)。

我還沒有設法找到任何更好的開源項目,但是,可以推薦GemBox's spreadsheet API's作爲一個成熟的商業選項(外加一個基本的free version,很適合測試它)。這種方法的一個主要優點是它是100%的託管代碼,因此使部署更加整潔。

如果您願意花錢購買圖書館的預算,選擇的可能性就會降低!