使用C#从Excel电子表格中读取/写入

时间:2011-03-17 00:08:09

标签: c# database excel

我需要创建一个将一些数据写入excel电子表格的程序。根据名字,姓氏,电话号码,每行的电子邮件以及每个类别在其自己的列中的基本内容。

我甚至不知道从哪里开始。如果有人可以告诉我哪些程序集可以参考,也许可以指向一个网站或一本书,其中包括通过C#程序从excel电子表格中写入/读取数据,这将非常棒。

非常感谢。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

这个特殊功能在.NET中称为“Excel Automation”,您可以使用C#来操作电子表格。

一个很好的起点, http://support.microsoft.com/kb/302084#top

此致 安迪。

答案 2 :(得分:1)

取决于所需的复杂程度:

  • 编写逗号分隔值(CSV)文本文件。 Excel将打开它,但你不会得到任何格式。
  • 将HTML表写入文件并将文件命名为filename.xls。
  • format that Excel can open
  • 中写出XML文件
  • 直接调用Excel并使其构建电子表格。 (见cherhan的回答)

答案 3 :(得分:0)

为什么不创建一个csv文件,将其另存为xls。原生优秀是必须的吗?

答案 4 :(得分:0)

正如cherhan所提到的,Excel自动化是Microsoft以编程方式创建电子表格的标准方法。这种方法的缺点是它使用了COM互操作层,因此需要为运行代码的每个服务器提供Excel(和许可证)。

我没有找到任何更好的开源项目来做这件事,但是,可以推荐GemBox's spreadsheet API's作为一个制作精良的商业选项(加上他们有一个基本free version,好用于测试)。这种方法的一个主要优点是它是100%托管代码,因此使部署更加整洁。

如果您愿意花在图书馆的预算上,可能会选择这个选择!