我已经开始使用 Microsoft 为我的一个 C# 应用程序提供的 Excel 互操作程序集。一切都很好,但似乎缺乏强类型,老实说,感觉就像我在写 VBA 代码。是否有任何替代方法可以通过 C# 与 Excel 进行交互,从而提供更好的 OO 体验?顺便说一句,我正在使用 VS2010 和 .Net 4.0。
7 回答
看看 Codeplex 上的 EPPlus 项目:
我最近用过这个,效果很好。(VS2010 和 .Net4)
EPPlus 是一个 .net 库,它使用 Open Office Xml 格式 (xlsx) 读取和写入 Excel 2007/2010 文件。
不错的示例页面:http ://epplus.codeplex.com/wikipage?title=ContentSheetExample
根据您尝试执行的操作,例如生成 XLSX 文档,您可以使用Open XML SDK。
这非常适合生成办公文档;特别是因为它不需要安装办公室即可使用。
免费; 一个漂亮干净的 API,并得到 Microsoft 的支持。例如:
public static void CreateNewWordDocument(string document)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
{
// Set the content of the document so that Word can open it.
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
SetMainDocumentContent(mainPart);
}
}
示例来自:http: //msdn.microsoft.com/en-us/library/bb497758.aspx。这里有使用电子表格的示例。
如果您尝试直接与 Excel 交互(如 UI 自动化);不生成文件;那么 KeithS 的回答是我会怎么走。
NetOffice库是 Office Primary Interop Assemblies (PIA)的替代方案。NetOffice 提供了一组与版本无关的互操作库,因此您可以在您的应用中支持所有 Office 版本,并包含 IntelliSense 以向您显示在哪些 Office 版本下可用的方法。
NetOffice 还有助于跟踪 COM 引用,这在 .NET / COM 互操作中有时会很麻烦。
您在寻找什么类型的互动?只是写作?阅读?全面控制各个方面?
有很多第三方库可用于处理 Excel 文档,尤其是当您使用 xlsx 格式(2007 或更新版本)时。如果您只是写东西,甚至可以查看开源实现(例如,Sourceforge 有Excel Writer)。
ExcelLibrary 非常好。http://code.google.com/p/excellibrary/
2020 年, https://github.com/ClosedXML/ClosedXML上的 ClosedXML 库似乎非常有能力生成 Excel 文件。它基于 Microsoft 的 Open XML SDK ( https://github.com/OfficeDev/Open-XML-SDK )。它不需要在计算机/服务器上安装 Excel 即可工作。显然,您可以使用它在 Web 服务器上生成 Excel 文件。它有一组非常好的对象,这些对象公开了操作 Excel 文件的相对简单的方法。
OLE 自动化是应用程序进行通信的 Windows 标准方式,而不是剪贴板。因为不是每种需要 OLE 的语言都具有泛型(甚至是强静态类型),所以接口必然非常通用。
如果您只是拒绝使用 OLE,您可以使用 Windows 脚本主机来移动 GUI 本身并以这种方式获取数据,或者使用 WinAPI DLL 进行屏幕抓取。您还可以根据 XLS 和 XLSX 文件的文档标准为 Excel 文件编写或滑动 ETL。无论如何,我认为使用 OLE 的缺点可以通过您不必尝试以任何其他方式与 Excel 交互的极端优势来减轻。