问题标签 [pia]

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 投票
8 回答
2167 浏览

c# - 发布 COM 组件

当您不再需要通过调用 Marshal.ReleaseComObject(..) 时,是否真的有必要从 Office PIA 释放 COM 组件?

我在网上找到了关于这个主题的各种相互矛盾的建议。在我看来,由于 Outlook PIA 总是返回对其接口的新引用作为其方法的返回值,因此没有必要显式释放它。我对吗?

0 投票
4 回答
6341 浏览

c# - 从 MS Access 数据库中提取源代码

我有一个 Access DB,我想从中提取源代码,以便将其放入源代码控制中。

我尝试使用主互操作程序集(PIA)提取数据,但我遇到了问题,因为它没有提取所有模块和表单。

代码中有 140 个表单和模块(别问,这是我继承的遗留系统),但 PIA 代码只提取了其中的 91 个。

这是我正在使用的代码。

关于该代码可能缺少什么的任何建议?还是在可以为我做这件事的产品/工具上?

编辑:我还应该提到这需要将脚本写入磁盘,与 VSS 集成不是一个选项,因为我们的源系统是 SVN。谢谢。

0 投票
2 回答
315 浏览

.net - 帮助在 Excel PIA 程序集中将 TypeConverters 用于枚举

我想使用 TypeCoverter 将 PIA 加载到 Excel 中的程序集中的枚举输出区域化。

我可以运行它,它适用于我使用显式引用的程序集创建的测试项目中的程序集,但是在运行已构建为 Excel PIA 的项目时。如果我尝试:_ public enum MyEnum ItemA ItemB end enum

并在代码 myE = MyEnum.ItemA Dim 转换器 As System.ComponentModel.TypeConverter = TypeDescriptor.GetConverter(myE)

在即时窗口中?converter.ToString() 管理“System.ComponentModel.EnumConverter”

而在我的另一个项目中(也是一个强签名的程序集,但直接从一个新创建的存根窗口表单项目中引用),我得到

? 转换器.ToString "ClassLibrary1.LocalizedEnumConverter"

所以看起来 LocalizedEnumConverter 没有绑​​定到枚举 - 有什么想法吗?这是因为 Excel 加载程序集的方式,有没有办法解决这个问题?

0 投票
5 回答
5324 浏览

c# - 使用 ASP.NET 自动化 Excel

背景

我们正在使用 ASP.NET 2.0 开发一些内部实用程序。其中之一是从数据库中提取一些信息并构建一个 Excel 工作簿,其中包含许多电子表格,其中包含基于对数据库的查询的数据。

问题

概念验证原型(一个简单的 ASP.NET 页面,从数据库中查询单个项目并打开 Excel 以将数据添加到工作表)在开发机器上本地运行时运行良好,可以愉快地创建和显示 Excel 电子表格按照要求。但是,当在我们的服务器上运行时,我们在尝试实例化 Excel 时收到以下错误。

无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败,因为 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

解决方案?

我们正在使用 PIA for Excel 2003,并且我们在服务器上安装了 Excel 2003 和 PIA。谁能解释为什么这不起作用或给我们一些关于如何追踪问题的提示?

感谢您提供的任何帮助。

0 投票
7 回答
27028 浏览

c# - C# 互操作:将新工作表添加到现有文件后,excel 进程未退出

可能重复:
如何在 C# 中正确清理 Excel 互操作对象

我在这里阅读了许多其他关于在使用 .Net-Excel 互操作时管理 COM 引用的线程,以确保 Excel 进程在退出时正确退出,到目前为止,这些技术一直运行良好,但我最近遇到了一个将新工作表添加到现有工作簿文件时出现问题。

下面的代码留下了一个僵尸 Excel 进程。

如果我将工作表添加到新创建的工作簿文件中,它会正常退出。如果我运行不包括该.Add()行的代码,它会很好地退出。(我正在读取的现有文件是一个由注释掉的代码创建的空文件)

有任何想法吗?

0 投票
4 回答
7497 浏览

deployment - 是否可以在没有 Office 2007 的情况下部署 Office 2007 PIA?

Office 2007 PIA 是否也需要安装 Office 2007?我可以使用 VSTO 3.0 部署 Office 2007 PIA(不安装 Office 2007)吗?

编辑:我有一个生成 MS Word 文件的 Windows 应用程序。我在设置中添加了 Office 2007 PIA 作为自定义先决条件,但 Office 2007 PIA 需要安装 MS Office 2007。

我只是想知道如果 VSTO 不需要 Office 安装,那么也许我可以将我的应用程序转换为 VSTO。

0 投票
2 回答
280 浏览

visual-studio-2008 - Visual Studio 2008 可以参考 1.0 程序集吗?

我有一个似乎针对.NET 1.0 框架的旧程序集(Office XP PIA)。该程序集已注册并在 GAC(以及 Win32 注册表)中可见,但当我选择“添加引用”时它不会出现在 Visual Studio 2008 中。

Visual Studio 是否支持引用旧程序集?

0 投票
1 回答
2127 浏览

c# - 是否可以使用 PIA 将 microsoft word 文档编辑器插入到自己的应用程序中

如何在自己的应用程序中使用 Office Primary Interop 程序集,如框中的 Business。是否可以?

0 投票
2 回答
5843 浏览

pia - 安装 2007 兼容包后,Office 主互操作程序集不工作

我有一个 C# 程序,它做了一些 Word 和 Excel 自动化,它使用了 Office 2003 Primary Interop Assemblies。我部署它的方式是将 Interops 包含在 bin 中,我让我的程序从那里引用它,而不是从 GAC 引用它(不是很专业,但它工作了几年)。最近在 3 台机器上安装了 office 2007 兼容包,现在当我的软件尝试调用 Word 或 Excel 时,我收到一个错误:

无法将 Microsoft.Office.Interop.Word.ApplicationClass 类型的 COM 对象转换为接口类型 Microsoft.Office.Interop.Word.Application,此操作失败,因为对具有 IID {00020970-0000 的接口的 COM 组件的 QueryInterface 调用-0000-C000-000000000046} 由于以下错误而失败:库未注册。(来自 HRESULT 的异常:0x8002801D (TYPE_E_LIBNOTREGISTERED))

经过一番搜索,我注意到安装兼容包 Word11 和 Word12 都安装在 GAC 中,与 Excel 相同。

我试图让我的程序引用 GAC 中的 Word11 互操作,但仍然没有帮助。我卸载了 Word12 互操作,但仍然没有帮助。似乎安装它似乎改变了一些注册表设置或者我的软件感到困惑的东西找不到正确的库。

有人有什么想法吗?

0 投票
0 回答
2192 浏览

c# - 如何检查是否安装了主互操作程序集?

可能重复:
如何检查 .net interoperability for excel 是否已安装

我在我的 C# 代码中“使用”Microsoft.Office.Interop.Excel。

仅当在该计算机上安装了 PIA for Excel 时,我才想使用与 Microsoft.Office.Interop.Excel 相关的代码。

但是,当我调用该函数(使用 Excel 互操作性)时出现异常

为什么即使该代码实际上没有被调用,我也会收到异常?如何解决这个问题?即只有在安装了 Excel PIA 后才能使用它。

谢谢