问题标签 [excel-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 投票
2 回答
8680 浏览

c# - 实例化 Excel 函数

我到处寻找如何在 C# 应用程序中使用 excel 函数告诉我执行以下操作:

  • 从 COM 选项卡添加以下 using 语句:using IExcel = Microsoft.Office.Interop.Excel
  • 然后声明并初始化一个 IWorkSheetFunction 对象IExcel.IWorksheetFunction iwf = new IExcel.IWorksheetFunction();
  • 现在您可以使用 int result = iwf.Math.Sum(1,2); 中的函数

我遇到的问题是,虽然智能感知正在检测 IExcel,但它没有显示 IWorksheetFunction。但是它显示了 WorksheetFunction。无论哪种方式,它都不允许我将它实例化为一个对象。我收到错误消息:无法创建抽象类或接口“Microsoft.Office.Interop.Excel.WorksheetFunction”的实例

有任何想法吗?

0 投票
2 回答
6866 浏览

c# - 如何查找在 Excel 工作表上选择了哪些单元格?

我需要能够使用 C# 和 Excel 互操作来确定在工作簿/工作表中选择了哪些单元格。如果在 Excel 中有这样的定义就好了:

0 投票
4 回答
3717 浏览

c# - C# excel互操作公式拖动

我正在使用 C# excel 互操作框架为我的公司自动生成一堆报告,我想知道是否有人知道如何用它来拖动方程式。

如果我可以使用命名范围来做到这一点,那就更好了,但即使我必须对行进行硬编码,所以它沿着将 A10:J10 向下拖动到 A20:J20 的行,这也可能没问题。

甚至任何指向解释如何执行此操作的网页的指针都将不胜感激,因为我有点卡在这个网页上。

谢谢!

0 投票
2 回答
1210 浏览

c# - Excel删除行删除错误的行

此代码应该获取我指定范围内的所有行,并仅删除其中没有单元格数据的行。它实际上是在删除范围内的每一行。为什么?

0 投票
9 回答
132284 浏览

.net - System.Runtime.InteropServices.COMException (0x800A03EC)

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs()方法在 Windows server 2003 和 XP 上运行良好,但在 Windows server 2008 上运行良好。我复制了它,因为它提供了所有 Dll 和权限

我也尝试了网上给出的所有解决方案,例如文化设置和DCOM权限。

收到以下错误:

System.Runtime.InteropServices.COMException (0x800A03EC):来自 HRESULT 的异常:0x800A03EC

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(对象文件名、对象文件格式、对象密码、对象 WriteResPassword、对象 ReadOnlyRecommended、对象 CreateBackup、XlSaveAsAccessMode AccessMode、对象 ConflictResolution、对象 AddToMru、对象 TextCodepage、对象 TextVisualLayout、对象本地)

请帮忙 ..!

0 投票
1 回答
159 浏览

c# - Excel 互操作文件重命名

我有一个程序使用 excel 互操作例程来生成一堆基于 excel 模板的报告。

这一切都可以接受,但我试图弄清楚的副作用是如何防止用户覆盖原始模板。

由于我无法控制的原因,它必须是 excel,据我所知,这意味着模板必须位于所有用户都可以读/写的 Intranet 上。(如果它是一个存档,那么用户运行的应用程序将无法用新数据填充它)

我正在考虑尝试通过重命名文件并将其移动到网络上的其他位置来解决这个问题,但我不确定这是否可能。(因此线程的名称)

此外,可能还有一种更好的方法来解决我没有想到的问题。

0 投票
1 回答
1900 浏览

excel - Excel 互操作 - 获取 Excel::Application::Selection 的类型

在 Excel 中选择某些内容时,Excel::Application::Selection 属性包含所选对象。例如,如果我选择某个单元格,我可以使用以下命令轻松地将它们转换为 Excel::Range:

其中 Excel = Microsoft.Office.Interop.Excel

Now when some picture is selected, I have to cast it to Excel::Picture, then Excel::Shape in case of some shapes but it seems there are different interfaces for each shape like Oval, Rectangle etc. I need to delete whatever thing在工作表上被选中。如果是单元格,则内容将被清除,图片、形状或 OLEObject 将被删除,但问题是我不想检查每个界面:

我希望如果只有一个基本接口,我可以将所有形状/图片投射到其中并在它们上调用 delete。

是否可以获得:

  1. Application::Selection 中的真实类型 - 它显示 System::COMObject 但没有关于真实类型的信息
  2. 以某种方式识别选择包含图片/形状等并在基础类型上调用“删除”方法
0 投票
3 回答
5779 浏览

.net - Windows server 2008 是否支持 Office 2003 互操作 ..?

尝试在 Windows Server 2008 上运行依赖互操作的程序时出现以下错误,它在 Win Server 2003 和 XP 上运行良好:

System.Runtime.InteropServices.COMException (0x800A03EC):来自 HRESULT 的异常:Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs 的 0x800A03EC (......)

根据微软的说法,Windows Server 2008 不在支持的操作系统列表中。

http://www.microsoft.com/downloads/en/details.aspx?familyid=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&displaylang=en

系统要求

支持的操作系统:Windows 2000 Service Pack 3;Windows Server 2003;Windows XP

任何人都可以确认这一点..有人试过吗..?

0 投票
1 回答
241 浏览

multithreading - Windows 应用程序。线程中止问题

我正在开发一个应用程序,该应用程序必须根据放置在文件观察者监视的文件夹中的文件做出特定决定。

此决策过程的一部分涉及重命名文件,然后再将它们移至另一个文件夹进行处理。

由于我正在处理所有不同大小的文件,因此我创建了一个对象,该对象在单独的线程中检查文件以验证它是否“可用”以及何时触发事件。

当我从这个可用事件中运行重命名代码时,它可以工作。

我遇到的问题是,当扩展名与源文件不同并且重命名为文件时,我正在调用转换工厂,该工厂根据转换类型返回工厂对象,然后在之前相应地转换文件做重命名。当我在单元测试中运行那段特定的代码时,它可以工作,工厂对象被返回,并且转换正确发生。

但是当我在这个过程中运行它时,我开始......

将 .xls 或 .xlsx 转换为 .csv 的一部分,我收到“线程被中止”错误。

有什么想法吗?

更新:

有更多信息和一些关于应用程序当前如何工作的地图。

  • 运行 FSW 的客户端应用程序
  • On File Created 事件 创建一个传入文件路径的 FileObject。
  • 在构建文件时验证:如果文件存在则为真,

    /li>
  • AvailableCheck 方法反复尝试打开文件的流读取器,直到创建读取器或尝试次数超时。如果阅读器被打开,它会触发 FileAvailable 事件,如果没有,它会触发 FileUnAvailable 事件,并在事件中传回自身。

  • 客户端应用程序被连接以从 FSW 的 Oncreated 事件中捕获这些事件。

  • OnFileAvailable 方法然后调用包含 excel 互操作调用的重命名功能。
  • 如果文件正在被重命名(未转换,扩展名保持不变),它会移动将名称从旧文件名更改为新文件名,如果是转换,它会运行一个转换工厂对象,该对象返回正确的转换类型基于源文件的扩展名和目标文件名。
  • 如果它是一个简单的重命名,它可以工作 w/oa 问题。如果它是一个转换(这是作为工厂的一部分返回的 XLS 到 CSV 对象),它所做的第一件事就是创建一个新的应用程序对象。这就是应用程序爆炸的地方。

当我在线程之外测试工厂和转换/重命名过程并在其自己的单元测试中,该过程可以正常工作而没有 oa 问题。

更新:

我通过执行以下操作在线程内测试了 Excel 互操作:

在应用程序被初始化的那一行,我得到了'System.Threading.ThreadAbortException 类型的第一次机会异常'错误。

所以我补充说;

在线程实例化之后和线程开始调用之前,仍然得到同样的错误。我得到了我将不得不重新考虑设计的想法。

0 投票
1 回答
158 浏览

excel - 在 excel 中选择自动化服务器(用 .NET 编写)的设置

我们有一些用 .NET 编写并通过 COM 暴露给 Excel 的 excel 公式。想要使用我们的公式的用户必须:

  1. 运行一些将 dll 注册到 COM 中的 bat 文件(使用 RegAsm)
  2. 然后在 Excel (2010) 中选择 File|Options|Add-ins|Excel Add-ins|Automation|Select our server|GO|GO

我们希望使用一些自动设置来避免 (2.)。有人知道如何实现吗?

提前致谢。