用 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 文件

有没有办法像使用 C# 的 MS Office Excel 一样创建/读取 LibreOffice 电子表格?

在 C# 中使用 MS Access 查找字段

二级MS Office高级应用考试真题精讲冲刺专用

MS Office是啥

{过时·留存}MS Office文档