问题标签 [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 回答
3433 浏览

c# - 使用 C# 将 HTML 表格转换为 Excel 工作表

我在 Microsoft.Office.Interop.Outlook.MailItem 正文中有 html 表,我只需要使用 C# 为桌面应用程序填充此表的 excel 表。任何人都可以在这方面帮助我。谢谢

0 投票
6 回答
10293 浏览

c# - 无法使用 Excel 互操作计划计划

我在 C# .NET 中开发了一个使用 Excel 互操作的控制台程序。如果我从命令行运行,该程序在我的开发机器和 windows server 2008 上运行良好。

当我尝试安排一个任务每天运行它时,我得到了这个烦人的互操作错误:

文件 'e:\excel.xls' 存在,如果在程序启动时完全关闭,因为如果我尝试在命令行中运行相同的程序,它会按预期结束。

我还设置了我的任务以管理员身份运行,所以它不应该是权限问题。

你能帮助我吗?

0 投票
1 回答
600 浏览

c# - 如何在生成的 Excel 文件中提供多项选择

我正在开发一个生成一系列 Excel 文件的应用程序,用户需要在其中输入学校成绩信息。其中一个部分要求用户从三种可能性中选择一个值。

我认为使用 ActiveX 单选按钮执行此操作是有意义的。但是,我注意到使用这些控件时文件的大小大大增加,并且文件在打开时变得有些无响应。请注意,我有几百到一千个单选按钮,具体取决于所需的信息量。

关于替代方法有什么建议或想法吗?使用较旧的表单控件(非 ActiveX)以保持较小的文件大小并提高响应能力是否会有所帮助?或者我是否没有足够的选项来使用旧控件,因为在稍后阶段我还需要阅读 Excel 文件和用户的输入?

FWIW,我正在使用以下代码创建新的单选按钮:

0 投票
2 回答
2198 浏览

c# - Excel 互操作:退出 Excel 应用程序实例会使我的测试失败?

我想封装 Excel Interop 的使用,使其更容易在可重用库中使用。

到目前为止,我已经编写了一些完全运行良好的测试,除了在每个测试之间,我强制 Excel 相当,以便它不再处理测试文件以便能够删除。

一旦我在每次测试之间退出应用程序实例,Excel 似乎不再响应,导致 Windows 显示

“Excel 已停止工作,正在寻找解决方案”

信息。此消息持续几秒钟,同时 Excel 正在关闭,导致文件挂起,我的测试抛出异常,例如

“无法访问文件,因为它正在被另一个进程使用......”

信息。否则,我的每个测试都单独运行就好了!

关于如何解决这个问题的任何线索?

我是否过度使用该ApplicationClass.Quit()方法?

仅在我的测试完成测试后退出 Excel 会导致为测试目的创建的文件不可删除。

谢谢!=)

0 投票
1 回答
1294 浏览

excel - 使用 set_Value 将数据从 C# 转储到 Excel 会引发错误

我正在尝试将数据转储到 Excel 文件中。以下是我们使用的代码。

注意:dt 是从另一个函数传递的 DataTable。

它抛出异常

HRESULT 异常:0x800A03EC

在线

Excel 文件已部分填充。当它尝试将此值从 myArray 复制到 Excel 时会发生异常。

Enawvg Xnhe/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr 10-02-2009 09:39 NZ Gb PPEC/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr@ZnkArjLbexYvsr pp

Fhowrpg Sj: cyf vagvngr ershaq

紫外线,

cyrnfr svaq gur pbeerpg cbyvpl ahzore

268538840

启用Xnhe

----- Sbejneqrq ol Enawvg Xnhe/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr ba 02/10/2009 09:38 NZ ----- PPEC/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr 02/09/2009 05:37 CZ Gb Enawvg Xnhe/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr@ZnkArjLbexYvsr pp

Fhowrpg Er: cyf vagvngr ershaq

紫外线

Gunax lbh sbe jevgvat gb Phfgbzre Freivprf ng Znk Arj Lbex Yvsr Vafhenapr。

Jr npxabjyrqtr gur erprvcg bs lbhe inyhnoyr srrqonpx naq bhe Phfgbzre Freivpr Rkrphgvir jvyy trg va gbhpu jvgu lbh va gur arkg 48 ubhef。

Cyrnfr abgr gung gur ersrerapr ahzore sbe lbhe srrqonpx ner

268538295 2141982 268598840 vapbeerpg ab。

Jr erdhrfg lbh gb dhbgr gur nobir ahzore va nyy shgher pbzzhavpngvba jvgu ZALY ercerfragngvirf。

Lbh znl nyfb trg va gbhpu jvgu bhe Phfgbzre Uryc Yvar ahzore 1800 180 5577(gbyy serr vs pnyyvat sebz ZGAY 是 OFAY argjbex)是 0124-2542001

Gunaxf naq Ertneqf Xnenz Fvatu Phfgbzre Freivprf Znk Arj Lbex Yvsr Vafhenapr Pb. 是的。Bcrengvba Pragre,Cybg Ab。- 90 N Frpgbe - 18, Hqlbt Ivune Thetnba - 122002 Gry - 0124 - 2542001 Gbyy Serr - 1800-180-5577 Snk ahzore -- 0124 - 4239683

Enawvg Xnhe/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr 09-02-2009 03:07 CZ Gb PPEC/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr@ZnkArjLbexYvsr pp

Fhowrpg cyf vagvngr ershaq

紫外线,

cyf ybt n serfu pnfr

ershaq purdhr abg erprvirq

268538295 268598840

启用Xnhe

为什么会抛出错误?set_Value 是否存在已知问题?

我尝试了链接 1中描述的以下两个选项

任何建议或意见将不胜感激!谢谢!

编辑

当我使用 Microsoft Office Excel 2007 SP 2 时,此代码运行良好。

失败的 Microsoft Office Excel 2003 版本/SP 是标准版本(未安装任何 SP)。

0 投票
1 回答
785 浏览

c# - 如何将 ac# 对象附加到 Excel 工作表并在保存工作簿时保存它

我正在 c# 中创建一个 excel 加载项。在加载项中,用户创建“查询”对象,然后执行查询并在 Excel 中显示数据。我想保存“查询”对象并能够在给定工作表的情况下获取它,以便对其进行编辑并重新执行查询。

我发现了以下可能性:

它将查询保存为字符串(在序列化对象之后)。我仍然需要一种将查询连接到工作表的方法,我尝试过使用工作表名称 - 问题在于工作表名称可能会更改。所以我的问题是:

  1. 有没有办法获得工作表的唯一标识符?
  2. 有没有更好的方法来实现我想要做的事情?

谢谢

0 投票
8 回答
12036 浏览

c# - 使用 Excel 互操作删除空行

我有用户提供的需要转换为 PDF 的 excel 文件。使用 excel 互操作,我可以用.ExportAsFixedFormat(). 当工作簿有数百万行时,我的问题就出现了。这变成了一个有 50k+ 页的文件。如果工作簿在所有这些行中都有内容,那就很好了。但是,每次出现这些文件中的一个时,可能有 50 行有内容,其余的都是空白的。如何删除空行以便将其导出为大小合适的 PDF?

  1. 我尝试从最后一行开始,并逐一CountA检查该行是否有内容,如果有,则将其删除。这不仅需要永远,而且在大约 100k 行之后似乎会失败,并出现以下错误:

    无法计算表达式,因为代码已优化或本机框架位于调用堆栈顶部。

  2. 我尝试过使用SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues),但如果任何单元格具有格式(如 bg 颜色),则包含一行。

  3. 我试过使用Worksheet.UsedRange然后删除所有内容,但UsedRange问题与第二点相同。


这是我尝试过的代码:


我的代码有问题吗,这是互操作问题,还是只是 Excel 功能的限制?有没有更好的方法来做我正在尝试的事情?

0 投票
4 回答
2124 浏览

c# - C# 阅读 Excel 工作簿、OLEDB 还是 Excel 互操作?

我需要阅读具有 2 张记录的 Excel 工作簿,其中包含超过 60,000 条记录。该应用程序是一个 ASP.Net 应用程序,因此性能很重要。

我应该采取哪种方法?我应该使用 Microsoft.Office.Interop.Excel 还是应该在 ADO.Net 中使用 OLEDB?

最好的方法是什么?

0 投票
3 回答
8552 浏览

c# - 如何确定 Adob​​e PDF 打印机在哪个“Ne”端口?

如何检测打印机在哪个端口(Ne01:、Ne02:、Ne99: 等)?

BigCorp 的计算机 (WinXP) 安装了 Adob​​e Acrobat(7.0 Pro 版),它提供了一个名为“Adobe PDF”的虚拟打印机。如果您在录制宏时将 Excel (2003) 工作簿打印为 pdf,则打印机的全名是“Adobe PDF on Nexx:”,其中 xx 是两位数....并且根据您尝试的计算机而有所不同。

我已经使用 Excel.Interop 编写了一个 C# 控制台应用程序(我强烈反对其他任何人从这条通往地狱的道路开始),它会打开一系列电子表格。它在每个宏中运行一个宏,以 pdf 格式保存、打印,然后将 pdf 移动到共享驱动器上的报告文件夹中。

我面临的问题是每次安装 Acrobat 似乎都会为 PDF 打印机选择一个随机端口号......我不知道如何获得它。

到目前为止,我已经尝试过像这样使用Win32_Printer 类

我还在 System.Drawing.Printing 类中闲逛。PrinterSettings.InstalledPrinters将为您提供打印机“Adobe PDF”的名称,但我不知道如何获取端口信息。

如果我只将“Adobe PDF”传递给 excel interop PrintOut() 方法,它有时会起作用,有时会因“文档无法打印”而失败......我不知道为什么。

如果我通过带有适当 x 值的硬编码“Ne0x 上的 Adob​​e PDF:”,它每次都有效。

如果我尝试所有可能的变化,Excel 会很有帮助地打印到默认打印机。我没有更改默认打印机的选项(安全策略限制)

谁能指出我正确拉动打印机端口的代码?

0 投票
4 回答
23240 浏览

c# - 使用 Excel 互操作扩展公式范围

我正在使用 Excel 互操作库来获取工作表并替换工作表中的值。我的工作表结构如下:

AE 列包含处理 FL 列中数据的公式 当我更新工作表时,我会清除 FL 中的内容并将任何公式留在 AE 中。然后我用新数据填充列 FL。

我需要 AE 列(任何行)中的公式扩展到我输入的新数据的全部范围。

例如,如果我将数据从 8 行扩展到 20 行,=sum(G1,G8)应该变成=sum(G1,G20)这样。有没有办法获得工作表中所有现有的公式?如何扩展公式的范围?