用 C# 对 MS office 进行编程 - 有可能吗?
Posted
技术标签:
【中文标题】用 C# 对 MS office 进行编程 - 有可能吗?【英文标题】:Programming MS office with C# - is it possible? 【发布时间】:2016-03-23 08:05:11 【问题描述】:可以使用 Visual Basic for Applications 对 Excel 等 MS Office 应用程序进行编程。是否可以使用 C# 对 MS Office 进行编程以执行高级任务?
【问题讨论】:
我认为,有两个大方向。首先,编写一种插件以在 Excel(或其他)中添加一些功能。这可以通过例如来完成VSTO,就像帕特里克所说的那样。第二个是一个在没有 excel 本身的情况下操作 excel 文件的程序。这可以通过 NPOI 或其他几个库之一来完成...... NPOI 是否类似于用于 Microsoft 文档的 java API(用于 .net)? NPOI 是一个库,它为您提供类/方法来直接从 c# 应用程序操作 excel 或 word 文件。看看npoi.codeplex.com 【参考方案1】:是的,是的。您可以使用Visual Studio Tools for Office,它允许使用 C#、VB.NET 等编写加载项。它使用 COM 互操作与 Office 进行通信。
另外,现在你有 Office apps,它是 javascript 和可能的服务器端点的混合体,也可以用 C# 编码。
【讨论】:
【参考方案2】:当然。您可以免费安装Visual Studio Community 2015。然后查看这个文件夹(路径可能不同):
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Office15
从这里您可以找到每个 Office 应用程序的 dll。
以Microsoft.Office.Interop.Excel.dll
为例,新建一个C#项目,将该dll添加到项目引用中。
using Excel = Microsoft.Office.Interop.Excel;
然后你可以像这样初始化你的excel应用:
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\path\file.xlsx");
Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
在线上有大量此类教程。 DoNotPerls 是从基础开始的好地方:
-
Excel
Word
【讨论】:
【参考方案3】:不提Excel-DNA 是不公平的。由一位才华横溢且非常乐于助人的小伙子编写的令人惊叹的产品,并得到了良好的社区支持。它是免费的,可以很容易地制作 Excel 自定义函数、RTD 服务器和其他好东西。
Excel-DNA 是一个将 .NET 集成到 Excel 中的独立项目。借助 Excel-DNA,您可以使用 C#、Visual Basic.NET 或 F# 为 Excel 制作本机 (.xll) 插件,提供高性能的用户定义函数 (UDF)、自定义功能区界面等。您的整个加载项可以打包到一个 .xll 文件中,无需安装或注册。
编写自定义函数就像编写静态方法并在提供的 XLL 文件中包含已编译的 DLL 或 .cs 文件一样简单。
【讨论】:
【参考方案4】:另一个很好的选择(也是我推荐的)是使用 Add-in Express。 https://www.add-in-express.com
他们的工具集极大地扩展了 VSTO 或 COM 插件的功能。他们的支持非常棒,他们的网站提供了几乎所有 Office 开发方案的示例。
【讨论】:
【参考方案5】:对于 Excel,您可以使用我的 ESharper 加载项在实时 Excel 会话中使用 C# 以交互方式编写轻量级用户定义函数和命令,而无需额外的加载项部署开销。
【讨论】:
以上是关于用 C# 对 MS office 进行编程 - 有可能吗?的主要内容,如果未能解决你的问题,请参考以下文章
外部表不是预期的格式。未安装 MS Office。使用 C# 创建 xlsx 文件