2011-03-17 114 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%的托管代码,因此使部署更加整洁。

如果您愿意花钱购买图书馆的预算,选择的可能性就会降低!