Tag: com

Excel.exe应用程序完成使用时不closures

我目前正在尝试将graphics/图表从.xls作为图像发送。 我可以得到图表/图表发送电子邮件罚款。 我的问题是,当我看到任务pipe理器中有一个“EXCEL.EXE”仍然运行后,我已经调用xlApp.quit() 任何帮助,将不胜感激。 这是我目前使用的代码。 Excel.Application xlApp; Excel.Workbooks xlBooks; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.ChartObject xlChartObject; Excel.Chart xlChart; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlBooks = xlApp.Workbooks; xlWorkBook = xlBooks.Add(Properties.Settings.Default.FileToSend); xlWorkSheet = xlWorkBook.Sheets[1]; xlWorkSheet.EnablePivotTable = true; string filename = System.IO.Path.GetTempFileName(); xlChartObject = xlWorkSheet.ChartObjects(1); xlChart = xlChartObject.Chart; xlChart.Export(filename + ".gif"); xlWorkBook.Close(false, misValue, misValue); xlBooks.Close(); xlApp.Application.Quit(); […]

COMException细分

有没有人知道,如果一个网站(即使非微软),有详细的COMExceptions / HRESULTS。 当我尝试使用Copy()函数后保存我的Excel工作簿时,收到此错误: ERROR – Unable to SaveWorkbook() System.Runtime.InteropServices.COMException (0x800A03EC): Document not saved. PS我正在为10K +文件在一个严格的循环,但阅读文件工作得很好,但保存它们被certificate是没有乐趣。 另外,如果有人在使用Copy()函数时遇到Excel出血的问题,请告诉我。 谢谢! PSS如果有人需要进一步澄清,请让我知道 编辑1 这是怎么回事 我被要求更新一些XLS文件(实际上是10K +),通过将活动工作表复制到新工作表(相同工作簿),并通过执行一些转换来更新原始工作表。 我保存工作簿时出现问题。 以下是我申请的一些摘录: ///…. UpdateSpreadsheet() Routine Microsoft.Office.Interop.Excel.Workbook wb = null; try { wb = ef.GetWorkbook(fileName, false, true); } catch (Exception ex) { logger.Error(ex.ToString()); } Microsoft.Office.Interop.Excel.Worksheet ws = null; try { ws = wb.Sheets[Foo.WorksheetName] […]

用COM打开Excel显示紫色的骆驼?

我有这样的代码行:xl = win32.gencache.EnsureDispatch(“Excel.Application”) 这运行正常,当我运行脚本。 但是,我出口的python脚本是一个exe文件与py2exe,运行该exe后,它给出了这个错误: KeyError: '{000208D5-0000-0000-C000-000000000046}' 我所做的只是: setup.py from distutils.core import setup import py2exe setup(console=['xerxes2excel.py'])

如何closuresWindows窗体应用程序和excel.exe进程交互(可能通过垃圾收集器)?

我可能是唯一一个仍然自动化的Excel这种方式,我正在考虑以更好地处理COM对象等方式,但现在我只是导入Microsoft.Office.Interop.Excel并去为它。 起初给了我很多悲伤的东西是悬挂excel.exe进程,但是有大量的资源在线来解决这个问题 。 在这一点上,我对我的处理能力非常有信心。 有一件事我注意到,并想知道如何closures一个Windows窗体应用程序与后台运行excel.exe交互,可能更具体的垃圾收集器。 我已经写了不less的Excel自动化项目,并注意到,我运行我的程序.exe后,它已经完成有一个excel.exe进程挂起,直到我closures从Windows窗体应用程序的popup窗口。 为什么会这样呢? vb.net是否在窗口closures之后才调用垃圾回收? 看看我写的代码没有提到“closures应用程序窗口”事件,并且垃圾回收器和释放COM对象调用在代码中都是正确的,所以在代码执行后我似乎很好奇我认为垃圾收集已被称为,如在代码中)有一个excel.exe进程,直到我真正closuresWindows窗体应用程序窗口。 没有什么紧迫的,比任何事情都更好奇,但任何直接的,将不胜感激。 谢谢。

来自VSTO Excel Addin的进程COM-DLL的asynchronous调用?

我正在开发适用于Microsoft Excel 2007/2010的应用程序级VSTO 4 Addin。结果是使用.Net 4 Client Profile的基于Windows窗体的DLL。 现在我必须使用一个传统的COM-DLL。 设置引用并通过.Net通过COM-Interop访问COM方法是没有问题的。 但是我需要调用的(同步)方法可能需要一分钟或更长时间才能恢复。 我知道你的答案:使用工作者线程… 我已经使用任务并行库将长效操作放在工作任务中,并保持GUI(Excel)响应。 但是:进程中的COM调用(在工人任务/线程)似乎仍然阻止我的GUI线程。 为什么? 是因为Excel总是作为STA(单线程公寓)运行? 我如何保持Excel GUI的响应? 有没有办法让它真的asynchronous? 感谢任何答案, 约尔格

每当新版本的excel发布时,引用tlb都会丢失,我必须再次从excel中再次引用.tlb文件

我已经使DLL COM可见,并注册该DLL使用RegAsm工具。 在Excel中,我添加了一个对.NET DLL的TLB文件的引用,然后在Excel VBA中创build我的类的一个实例。 真正的问题出现在我发布dll的新版本时,我不得不再次手动添加对新dll的引用,这个excel应用程序将分发给很多用户,所以他们第一次需要手动添加对TLB文件的引用。 有没有什么办法可以从excel VBA自动引用TLB,或者可以在创buildtypes实例之前以编程方式加载?

无法创buildCOM对象`Excel.Application':“访问被拒绝”

我面临着在我的服务器上创buildExcel对象的问题,我的程序以抛出exception结束无法创buildCOM对象`Excel.Application':“访问被拒绝” 在事件日志中,我看到以下错误 “机器默认权限设置不授予对CLSID {00024500-0000-0000-C000-000000000046}的COM服务器应用程序的本地激活权限,对用户IIS APPPOOL \ ePortal SID(S-1-5-82) -1011135971-235349235-4113034207-2765443716-3287928964)从LocalHost(使用LRPC)。这个安全权限可以使用组件服务pipe理工具修改。 我已经给了必要的许可,但是这个错误仍然popup。 这是权限的截图。 提前致谢

Excel Interop与J编程语言COM服务器

我对函数式数组语言J有一些乐趣。但是,公开的例子说明如何从Excel访问J似乎有几个版本。 我可以成功地连接到J,并从简单的标量计算检索值,但不能检索数组。 已发布的示例没有错误,但只返回数组的一部分,其他每个元素都为零。 我正在使用64位J-7.01和64位Microsoft Excel 2010.是否有人知道一些发布的示例代码,可能会指导我正确的方向?

Excel 2013 COM API将服务帐户下的ExportAsFixedFormat挂起

我有一个.NET Windows服务调用Excel 2013 COM API来导出PDF上的Excel文档,我已经试过这个代码与Windows服务运行在两个不同的域帐户,运行代码的机器上的本地pipe理员。 在我login到机器的个人帐户下,代码按预期执行。 在服务帐户下,这是一个活动目录帐户,没有login到机器的Excel文档被打开,但导出逻辑从不返回,当我停止服务时,服务打开的Excel实例保持打开状态。 这是我正在使用的代码: object paramMissing = Type.Missing; XlFixedFormatType paramExportFormat = XlFixedFormatType.xlTypePDF; XlFixedFormatQuality paramExportQuality = XlFixedFormatQuality.xlQualityStandard; bool paramOpenAfterPublish = false; bool paramIncludeDocProps = true; bool paramIgnorePrintAreas = false; object paramFromPage = Type.Missing; object paramToPage = Type.Missing; Workbook excelWorkBook = null; try { // Open the source workbook. excelWorkBook = excelApplication.Workbooks.Open(file, paramMissing, […]

C#如何将Excel.workbook转换为IntPtr传递到导出的dll函数

所以我有一个VSTO插件为Excel,我想调用我写的代码利用一些自动化。 我用c ++编写了使用import文件中指定的lib文件的方法: C ++应用程序自动化Excel(CppAutomateExcel) 所以我有一个扩展方法: public static bool isEmbeded(this Excel.Workbook Book) { return dllFuncs.IsEmbeded(Book); } 和一个DLL导入的function: namespace dllFuncs { #region IsEmbeded [DllImport("test.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)] public static extern bool IsEmbeded(Excel.Workbook Book); #endregion } 这对应于一个导出的函数,它接受一个IUnknown指针并在其上执行一个查询接口,以确定它是否是一个Excel工作簿,一个Word文档或一个PowerPoint演示文稿。 c ++代码标题: bool WINAPI IsEmbeded(IUnknown* pOfficeDocument); class EmbededHelperFunctions { public: static bool isEmbeded(IUnknown* pOfficeDocument); private: static bool […]