问题标签 [office-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
39416 浏览

c# - 通过 Handle 获取使用 C# 的 Excel 应用程序实例

我有 ac# 简单的应用程序,它必须在特定工作表的 excel 范围内写入一些值。如果不存在,我会创建一个 Excel 应用程序实例,但如果存在,我想将其设置为活动状态,并在我的代码中使用它并获取一个实例。

我使用此代码创建一个新应用程序:

要获取活动 excel 窗口的句柄,我使用此 api

如何通过句柄获取 excel 应用程序的实例?

0 投票
4 回答
5779 浏览

.net - .NET Office 互操作使用版本无关的 office

我开发了一个将数据导入 Microsoft Excel 的应用程序。

我正在使用 VS2005 + .NET 2.0,并且我的机器(Office 12)上安装了 Microsoft Office 2007。

如果我在我的机器上运行编译的应用程序,它可以正常工作,但是当我将应用程序部署到其他机器时说那些使用较低版本(Office 2000)的机器,我收到错误:

无法加载文件或程序集 Microsoft.Office.Interop.Excel,版本 12.0.0.0

无论机器上安装了 Office (Excel),我如何才能使我的应用程序正确执行?

谢谢。

一些更新:我将引用的两个 DLL,即 Microsoft.Office.Interop.Excel.dll(版本 12.0.0.0)和 Office.dll(版本 12.0.0.0)放在我的 bin 文件夹中。我已将此引用的属性设置为 Copy Local = True,当我编译我的应用程序时,DLL 会复制到调试/发布文件夹中。

现在,当我尝试运行应用程序时,我已经摆脱了错误:“无法加载文件或程序集 Microsoft.Office.Interop.Excel,版本 12.0.0.0”

但是出现了另一个错误: System.AccessViolationException: Attempted to read or write protected memory。这通常表明其他内存已损坏。在 Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(对象文件名、对象 FileFormat、对象密码、对象 WriteResPassword、对象 ReadOnlyRecommended、对象 CreateBackup、XlSaveAsAccessMode AccessMode、对象 ConflictResolution、对象 AddToMru、对象 TextCodepage、对象 TextVisualLayout、对象本地)

那么,无论安装的 Office 版本如何,我如何实际创建一个能够将数据表数据导出到 Excel 的应用程序?

谢谢。

0 投票
1 回答
1257 浏览

c# - 是否可以使用 C# 将 PDF 插入 Word 邮件合并

我需要打印一个或多个 PDF 小册子,其中包含 Word 邮件合并中的每个字母(基于来自 SQL Server 的源查询中的字段值)。这可能吗?还是有另一种方法可以实现这一目标?

0 投票
5 回答
19321 浏览

c# - 在 C# 中的 Excel [2007] 中添加超链接 - 在 Excel 中它自己

谁能告诉我如何在 Excel(2007 或更高版本)中使用 .NET 中的 Office Interop(c#)将超链接从一张表中的单元格添加到另一张表中的单元格

例如:从 Sheet1 单元格 A1 到 Sheet2 单元格 B10 的超链接

0 投票
3 回答
60373 浏览

c# - C#:如何打开和关闭 Excel 工作簿?

有谁知道如何简单地打开和关闭 Excel 工作簿?

我不需要从文件中读取任何数据,我只需要打开和关闭它。(*)

我猜我需要参考 Microsoft.Office.Interop.Excel 程序集。


*原因:我已经使用 3rd 方库 (Aspose) 配置了数据透视表信息。现在我需要阅读生成的数据透视表。

不幸的是,Aspose 库无法在运行时生成数据透视表。它需要有人用 Excel 打开文件,以便 Excel 可以生成数据透视表值。

0 投票
1 回答
1341 浏览

c# - 如何用多个字段替换word模板中的部分C#

我正在创建一个 C# 应用程序,它使用来自外部数据源的数据填充 MS Word 文档上定义的 MergeFields。

我正在使用 OpenXml SDK,替换单个字段时一切正常。

我想要做的是,有一个定义了几个 MergeFields 的部分,并且能够根据输入数据多次复制这样的部分。

例如,我可以在文档中包含一个包含多个 MergeFields 的产品信息的段落,但在数据中我有多个产品的信息,我想在输出文档中生成与输入数据中的产品一样多的段落。

产品:[[产品名称]],金额:[[产品数量]],价格:[[产品价格]]

Word 文档中是否有类似“逻辑部分”的东西来包装段落?如果没有,您对此有何建议?

0 投票
1 回答
2035 浏览

c# - 检测并动态加载已安装的 Microsoft Word 对象库

一点背景故事:我有一个小型应用程序,它将使用 Word 根据 Word 模板和公司活动目录中的数据生成 Outlook 签名。它在装有 Office 2007 的计算机上运行良好,因为我在自己的计算机上编码时使用了“Microsoft Word 12.0 对象库”。

不过,网络上有不少安装了 Office 2003 的计算机,并且在这些计算机上缺少“Microsoft Word 12.0 对象库”,导致左右出现异常。

我的问题是:如何检测安装了哪个版本的 Office,从而检测到哪个版本的“Microsoft Word 对象库”可用,然后加载它。我很确定我正在使用的功能在“Microsoft Word 12.0 对象库”和“Microsoft Word 11.0 对象库”中。

如果有人感兴趣,这是我当前用于生成签名的代码:

任何帮助都感激不尽。也欢迎输入上面的代码;我没有任何针对 Office 互操作库进行编码的经验,因此我确信我可以做一些不同的事情。

最好的问候,埃吉尔。

0 投票
2 回答
508 浏览

ms-word - 仅使用分隔字段名称的原始 MailMerge

显然,我们的应用程序基于模板生成 Word 文档的正确方法是鼓励管理员用户(他们将负责模板)在模板文档中嵌入正确的合并字段或书签。

然而,在过去,我们发现通常不使用 MailMerge 或 Word 中任何其他“高级”功能的典型管理员用户因不得不使用合并字段而被严重推迟。我们已经尝试为他们做这件事,制作文档,大量截图等。但这对他们来说都是“繁琐”的。

他们有几十个模板(都是不同类型的非常简单的字母),并且会想要合理地频繁地修改它们。

他们真正想要的是能够用一个简单的分隔符(如花括号)来标记字段,这有效地将自制的合并字段标记到我们的应用程序中(尽管 Word 忽略了它的重要性),如下所示:

亲爱的{客户姓氏}

然后我们可以用几行代码来获取字段,如下所示:

这感觉很粗糙,但非常简单(对于最终用户)。

有没有其他人走这条路?有什么问题吗?我们建议他们不要在文档的普通文本中的其他地方使用“{”和“}”字符,但这并不是一个真正的重大限制。

速度?将合并字段包装成两行?其他问题?

0 投票
2 回答
1375 浏览

c# - 如何使用 Office.Interop 确定书签所属的表格单元格

我正在用 C# 创建一个应用程序。该应用程序需要从模板中创建一个 MS Word 文档。该模板包含一个表格和一个存储在表格单元格中的书签。我需要引用该单元格,即我需要确定它的行和列。

0 投票
3 回答
2431 浏览

c# - 如何在 C# 中禁用 MS Outlook 的安全弹出窗口?

如何使用 C# 禁用 MS Outlook 的安全弹出窗口?我正在弹出安全性,同时尝试使用我的 c# 应用程序启动要创建的 Outlook 任务。(使用 Microsoft Office Outlook 11.0 对象库))

屏幕看起来像

替代文字 http://img248.imageshack.us/img248/2988/securitypopup.jpg

谢谢