Tag: excel interop

如何确定Adobe PDF打印机的“Ne”端口?

如何检测打印机所在的端口(Ne01:,Ne02:,Ne99:等)? BigCorp的计算机(WinXP)安装了Adobe Acrobat(版本7.0 Pro),它提供了一个名为“Adobe PDF”的虚拟打印机。 如果在录制宏的同时将Excel(2003)工作簿打印为pdf,则打印机的全名为“Nexx上的Adobe PDF:”,其中xx是两位数….根据您尝试使用的计算机而不同 。 我已经使用Excel.Interop编写了一个C#控制台应用程序(我强烈反对其他任何人开始这条路走向地狱),这会打开一系列电子表格。 它在每个中运行一个宏,保存,打印为pdf,然后将pdf移动到共享驱动器上的报告文件夹。 我面临的问题是,每次安装Acrobat似乎都会为PDF打印机选择一个随机端口号…我无法弄清楚如何获得它。 到目前为止,我已经尝试过像这样使用Win32_Printer类 var searcher = new ManagementObjectSearcher( @”SELECT * FROM Win32_Printer” ); foreach ( ManagementObject printer in searcher.Get() ) { if ( Regex.IsMatch( printer[“Name”].ToString(), @”(adobe|pdf)”, RegexOptions.IgnoreCase ) ) { //printer[“Name”]; => “Adobe PDF” //printer[“PortName”] => “my documents/*.pdf” foreach ( PropertyData pd in printer.Properties ) { […]

Excel Interop:使用Task.Run创建实例会导致exceptionSystem.EntryPointNotFoundException

这是我产生问题的最小例子: using System.Runtime.InteropServices; using System.Threading.Tasks; using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { Task.Run(() => { Excel.Application app = new Excel.Application(); if (app != null) { app.Quit(); Marshal.FinalReleaseComObject(app); app = null; } }); } } 这导致以下exception: 日语的最后一部分说”EventSetInformation” of DLL advapi32.dll entry point cannot be found的”EventSetInformation” of DLL advapi32.dll entry point cannot […]

Microsoft Interop:Excel列名称

我正在使用Microsoft Interop来读取数据。 在excel-sheet中,列名称类似于A,B,C,D,….,AA,AB,….等等。 有没有办法阅读这个列名? 如果您需要任何其他信息,请告诉我。 此致,Priyank

如何调试慢速Office应用程序互操作构造函数?

我有一个处理excel的应用程序。 最近我遇到了Excel对象创建速度非常慢的问题。 我用这个简单的代码重新创建了这个问题: Microsoft.Office.Interop.Excel.Application xlApp; xlApp = new Microsoft.Office.Interop.Excel.Application(); 第二行导致延迟。 为了测量新对象分配所需的时间,上面的代码已经扩展了时间跟踪解决方案,结果是确凿的。 在NORMAL情况下,上面的代码在0.5s内执行,而在FAULTY-BEHAVIOR的情况下,它可能需要长达5分钟。 没有内存泄漏,并且正确释放了excel对象。 我的解决方案全年24/7运行,没有任何问题。 我不确定它是否重要但是应用程序在20个单独的用户会话(服务器机器)上运行。 因此,此应用程序有20个副本同时运行,可能会导致同时运行20个Excel副本。 这个问题第一次在2个月前被注意到并且已经通过升级Office(2010 – > 2013)解决了。 这次我有更多时间进行调查,遗憾的是结果并不乐观。 事实: 目前只有一台机器受此问题的影响(24个CPU内核,24GB Ram) 当“延迟”发生时,CPU根本没有压力 我尝试使用“进程监视器”应用程序来validation当我们“新的Excel.Application()”构造函数(看看是否有任何过多的磁盘/内存/ CPU使用)时会发生什么 – 没有资源限制的迹象。 没有与COM对象等相关的日志文件的迹象。 这里唯一的问题是这几分钟的延迟。 所有其他Excel Interop命令都照常工作。 主要问题: 有没有办法调试这个Microsoft.Office.Interop.Excel.Application()构造函数,看看哪个部分是一个问题? 外部内容 一个有类似问题的人。 他的解决方案根本无法解决我的问题。 编辑 – 附加测试 PowerPoint构造函数不受延迟的影响 ppApp = new Microsoft.Office.Interop.PowerPoint.Application();

将Excel图表从Excel导入到PowerPoint会导致某些计算机上出现“RPC_E_SERVERFAULT”

这是一个令人恼火的。 我创建了一种方法将工作簿中的所有Excel图表复制到PowerPoint幻灯片。 public int ImportExcelChartsFromWorkbookToSlides(int startingSlideIndex, string workbookPath, string[] slideTitles, int chartPosTop, int chartPosLeft = 10, int titleWidth = 680, int titleHeight = 20, int titlePosTop = 90, int titlePosLeft = 20, int titleFontSize = 18) { int slideIndex = startingSlideIndex; int titleIndex = 0; EXCL.Application objExclApp = new EXCL.Application(); EXCL.Workbook objWorkbook = objExclApp.Workbooks.Open(workbookPath, Editable: […]

我应该如何声明Microsoft.Office.Interop.Excel.Worksheet,以便我可以在C#中关闭它?

我很难确保我的COM对象正在关闭,所以我不会在后台运行EXCEL.EXE进程。 我已经知道声明的双点和链接是坏的,因为这可能会让COM对象徘徊。 有谁知道如何修复这行代码,以便我可以正确关闭并释放工作表COM对象? worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[strName]; 编辑:我已经尝试使用app.Quit()当我完成执行此行以关闭打开的Excel对象,但这不起作用。 如果我在此行之前调用它,则app.Quit()有效。

如何使用C#删除Excel图表图例条目?

我想删除Excel图表中某些(但不是全部)系列的图例条目。 根据我的经验,似乎SeriesCollection.Item(index)和LegendEntries.Item(index)不相关。 给定一个系列n如何只删除该系列的图例? 我正在使用Office Interop 2010和Visual Studio 2010.通过选择图例条目,然后右键单击并选择“删除”,可以通过GUI轻松完成。

Microsoft.Office.Interop.Excel.Worksheet.Cells .Style?

我找到了一些使用Microsoft.Office.Interop.Excel.Worksheet.Cells[x,y] Style属性的代码,但它在我的Visual Studo代码编辑器中被视为一个对象: Workbook wb = new Application.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet ws = wb.Sheets[1]; ws.Cells[x,y] is simply treated as an object so how can I use its Style property? 我正在使用Microsoft Excel 15.0对象库(与Microsoft Office 2013一起使用)。 那有关系吗? 你可以向我解释一下吗? 谢谢。

使用C#在Excel上的特定单元格中添加图片

我正在尝试将图像添加到第3行第1列的Excel单元格中,如下所示。 编译器给了我一个错误。 我在这里做错了吗? 提前感谢您的建议。 Excel.Application xlApp; Excel.Workbook wb; Excel.Worksheet ws; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); wb = xlApp.Workbooks.Add(misValue); ws = (Excel.Worksheet)wb.Worksheets.get_Item(1); ws.Cells[3, 1] = ws.Shapes.AddPicture(“C:\\photos\\4a.png”, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 75, 75, 350, 50);

无法在C#中打开Excel文件

我的项目中有以下C#函数,它应该打开并返回一个现有的Excel工作簿对象: Application _excelApp; // … private Workbook OpenXL(string path, string filename) { try { if (_excelApp == null) { _excelApp = new Application(); } Workbook workBook = _excelApp.Workbooks.Open(path + filename, // Name 0, // Do not update links true); // Open read-only return workBook; } catch (Exception e) { _excelApp = null; throw new ArgumentException(“Error […]