【发布时间】:2017-04-20 15:42:58
【问题描述】:
我需要编写一个将一些数据写入 Excel 电子表格的程序。一些基本的东西,比如名字、姓氏、电话号码、每行的电子邮件,每个类别都在自己的列中。
我什至不知道从哪里开始。如果有人能告诉我要参考哪些程序集,并可能将我指向一个网站或一本书,该网站或书籍涵盖了通过 C# 程序从 excel 电子表格中写入/读取数据,那就太好了。
非常感谢。
【问题讨论】:
我需要编写一个将一些数据写入 Excel 电子表格的程序。一些基本的东西,比如名字、姓氏、电话号码、每行的电子邮件,每个类别都在自己的列中。
我什至不知道从哪里开始。如果有人能告诉我要参考哪些程序集,并可能将我指向一个网站或一本书,该网站或书籍涵盖了通过 C# 程序从 excel 电子表格中写入/读取数据,那就太好了。
非常感谢。
【问题讨论】:
添加对 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
【讨论】:
此特定功能在 .NET 中称为“Excel 自动化”,您可以在其中使用 C# 来操作电子表格。
一个好的起点是, http://support.microsoft.com/kb/302084#top
问候, 安迪。
【讨论】:
取决于所需的复杂程度:
【讨论】:
为什么不直接创建一个 csv 文件,将其保存为 xls。必须使用原生 excel 吗?
【讨论】:
正如 cherhan 所述,Excel 自动化是标准的 Microsoft 以编程方式创建电子表格的方法。这种方法的缺点是它使用了 COM 互操作层,因此运行代码的每台服务器都需要 Excel(和许可证)。
我还没有找到任何更好的开源项目来做这件事,但是,可以推荐 GemBox's spreadsheet API's 作为一个制作精良的商业选项(另外他们有一个基本的 free version,非常适合测试它) .这种方法的一个主要优点是它是 100% 托管代码,因此使部署更加整洁。
选择可能取决于您是否愿意花在图书馆上的预算!
【讨论】: