Tag: com

我在哪里可以find一个PHP COM对象库及其所有function?

我一直在互联网上search某些function来操纵一个Excel的COM对象与PHP。 我能够创build一个新的Excel表格并保存数据,但我无法使用样式函数来使报告看起来不错。 以下是我的代码,以防万一: private $users; private $brdata; private $excel; private $book; private $sheet; private $today; private $columns; public function __construct() { $this->users = $this->model('users'); $this->brdata = $this->model('brdata'); $this->excel = new COM("Excel.Application"); $this->excel->Workbooks->Add(); $this->book = $this->excel->Workbooks(1); $this->sheet = $this->book->Worksheets(1); $this->today = date('Ym-d', strtotime("-1 days")); $this->columns = array("UPC" => "UPC", "VDR ITEM #" => "CertCode", "BRAND" => […]

使用Excel Com对象的Python线程

我试图打开一个工作簿使用python线程内预先打开的Excel COM对象。 使用下面的代码: from multiprocessing import Process, Queue def open_workbook(excel,iSub_Loc,q): p = Process(target = open_workbook_helper, args = (excel,iSub_Loc)) p.daemon = True p.start() def open_workbook_helper(excel,iSub_Locq,): wb = excel.Workbooks.Open(iSub_Loc) ws = wb.Sheets(1) q.put((wb,ws)) 但我得到以下错误 Can't pickle <type PyIDispatch'>: it's not found as __builtin__.PyIDispatch 有什么build议么?

ASP.NET WebApi无法在Azure中使用COM(Excel)

COM对象有一些问题 我有一个Web API控制器,创build和保存Excel文件。 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Workbooks.Add(); Microsoft.Office.Interop.Excel._Worksheet workSheet = excel.ActiveSheet; try { workSheet.Cells[1, "A"] = "Id"; -//- int row = 2; foreach (var _c in db.Clients) { workSheet.Cells[row, "A"] = _c.ClientId; -//- row++; } workSheet.Range["A1"].AutoFormat(Microsoft.Office.Interop.Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic1); fileName = string.Format(@"{0}/ExcelData.xlsx", System.Web.HttpContext.Current.Server.MapPath("~/Reports")); workSheet.SaveAs(fileName); 在创build之后,控制器为这个文件返回一个url。 在我的本地主机上,它工作得非常好,但作为主机部署到Azure云后,我有一个例外: ExceptionMessage: "Retrieving the COM class factory for component with CLSID […]

无法在Visual Studio 2013中debuggingC#RTD Server项目

作为尝试找出在我的机器上使用(以前)工作的.NET COM项目和Excel 2013的各种问题的一部分,我在Visual Studio 2013中创build了一个简单的testingC#RTDServer类。创buildtestingRTD服务器项目帮助我实现我的Excel 2013是一个64位版本,我需要将目标平台设置为x64,以便任何.NET COM组件都能够使用此版本的Excel。 这个testingRTD组件工作正常(只要它被编译为x64),但我不能debugging到使用Visual Studio的代码。 以前用于旧项目的工作是将启动应用程序设置为Excel.exe,然后我总是可以在ServerStart(IRTDUpdateEvent CallbackObject)方法中find一个中断点。 但是,当我用VS 2013项目尝试这个时,它从来没有达到中断点。 如果我在运行时设置了新的中断点,则会看到以下消息: 断点不会被打中。 没有符号已经加载这个文件。 我已经search了很多的解决scheme,但没有发现任何工作。

在Excel自动化中使用非本地化的公式

我一直在玩基本的Excel自动化使用COM接口,主要利用IDispatch::Invoke 。 我的testing涉及在新创build的Excel文档中添加一个公式。 使用devise的包装库,它看起来像这样: sheet.getObject( "Range", "A1" ).set( "Value", 23 ); sheet.getObject( "Range", "A2" ).set( "Value", 42 ); sheet.getObject( "Range", "A3" ).set( "Formula", "=SUMME(A1:A2)" ); // WTF? 注意:我在这里使用(德语)本地化的公式名称SUMME ,而不是预期的标识符SUM 。 在Excel中对macroslogging器进行相同操作时,生成的VBA代码将包含SUM 。 在我的C ++代码中使用SUM ,我结束了#NAME? 在Excel中的错误。 微软的Range.FormulaLocal财产文件说明如下: 返回或设置对象的公式,使用用户的语言中的 A1样式引用。 (重点是由我做的)。 所以我希望使用Formula而不是FormulaLocal我可以解决这些本地化的困境,但显然情况并非如此。 有没有什么办法可以使用非本地化的公式? 我猜想有一些很好的隐藏设置。

如何debuggingExcel的COM服务器加载?

我已经成功地编写了一个32位Excel RTD服务器 。 这是在Excel中加载罚款,并在单元格中键入=RTD(…) 。 然而,我的64位版本的相同的代码不起作用,我想知道任何方式来debugging这个。 我找不到任何相关的文件。 我有一个64位RTD服务器DLL。 依赖沃克没有显示任何问题,缺lessDLL依赖关系,事实上,如果我链接一个玩具可执行文件,我可以调用这个DLL罚款。 该DLL已成功注册regsvr32。 Excel甚至可以看到它,但将其列为“非活动”。 过去,在开发32位版本时,通常是由于缺lessDLL依赖关系(但没有错误消息)而发生的。 如前所述,我可以链接到DLL和依赖沃克没有显示任何问题。 我还能做些什么来debugging这个问题? 如果它是开源的,我会看看Excel的源代码,并试图做它做的,但显然这不是一个选项。 相同的代码产生一个32位的DLL,32位Excel运行良好。 但是,64位Excel似乎无法使用64位DLL。

无法在控制台应用程序中写入或读取Worksheet.CustomProperties

在我的控制台应用程序中,我试图写一些东西,并从Excel工作表的CustomProperties中读回来。 我有一个参考Microsoft.Office.Interop.Excel v14程序集。 在调用firstWorksheet.CustomProperties.Add方法的行firstWorksheet.CustomProperties.Add ,我得到一个HRESULT 0x800A03ECexception。 以下是相关的代码位: static void WriteToExcelCustomDocumentProperties( string excelFile, string outputFolder, string propertyName, object propertyValue) { excel::Application excel = null; Workbook workbook = null; Worksheet firstWorksheet = null; try { excel = new excel::Application(); workbook = excel.Workbooks.Open(excelFile); firstWorksheet = workbook.Worksheets[1] as Worksheet; firstWorksheet.CustomProperties.Add(propertyName, propertyValue); var outputFilePath = GetOutputFilePath(excelFile, outputFolder); workbook.SaveAs(outputFilePath); } catch(Exception […]

如何从内存中删除/卸载VB6 Excel COM加载项,而不卸载它?

我想知道如果有人知道我怎么能去从Excel环境(即卸载它),通过代码,但不卸载它的VB6 COM加载项 ? 我已经尝试设置相应的COMAddin“连接”属性为false,如下面的代码: MyExcellApp.COMAddins("myComAddin").Connect = False 虽然这样做是从内存中卸载加载项,但Excel在重新启动时不会再次加载它。 也就是说, COM加载项实际上是卸载的,必须重新安装(通过Excel的COM加载项菜单选项)才能重新运行。 我为什么要这样做? 那么,我正在创build一个相当复杂的COM插件 ,我想给最终用户一个机会来卸载它,如果他们觉得这是在干扰他们的环境。 它将像加载项的“退出”button一样,但只要重新启动Excel ,它就应该允许加载项再次加载。

Python:使用win32com(或其他模块)来调整excel文件的打印属性

我需要打印一个Excel表,并需要使用某种Python脚本。 到目前为止,我已经在我的脚本中使用win32com,我也完成了使用下面的代码打印输出: import win32com.client o = win32com.client.Dispatch("Excel.Application") o.Visible = 1 wb = o.Workbooks.Open(r'C:\test.xlsx') ws = wb.Worksheets[1] ws.PrintOut() 不幸的是,在我实际打印Excel表单之前,我需要调整此表单/文件的打印设置:将格式更改为横向并将其更改为小/窄边距。 我发现这个网站可能包含我所需要的: https : //msdn.microsoft.com/en-us/library/aa220363(v=office.11​​).aspx 不幸的是到目前为止,我还没有能够改变所需的打印属性。 我希望有人能帮助我,或者至less让我走向正确的方向。

Visual Studio OrderedTests:已经从其基础RCW分离的COM对象不能使用

首先,这里使用的技术包括:Visual Studio,C#,Selenium WebDriver,Google Chrome和MS Excel。 我正在构build一个自动化框架来testing多个Web应用程序。 我正在使用Excel电子表格来提取variables数据,以便其他testing人员使用testing更容易。 在我们的烟雾testing过程中,我们通过了几个我已经编制好的unit testing。 因此,我认为创build一个有序testing是一个好主意。 当单独运行每个testing时,他们工作得很好。 但是,一旦我开始运行有序testing,列表中的第一个testing将运行,但是我得到这个错误: System.Runtime.InteropServices.InvalidComObjectException:不能使用已从其基础的RCW分离的COM对象。 我在名为ReadFile的类中创build对Excel电子表格的引用: static Excel.Application xlApp = new Excel.Application(); static Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"SPREADSHEET LOCATION"); static Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; static Excel.Range xlRange = xlWorksheet.UsedRange; 当我的testing通过或失败时,他们调用CleanUp方法,它包括退出chromedriver并调用ReadFile.Close()方法: xlWorkbook.Save(); xlWorkbook.Close(Type.Missing, Type.Missing, Type.Missing); xlApp.Quit(); GC.Collect(); GC.WaitForPendingFinalizers(); 我做了相当多的研究,发现可能需要调用Mashall.FinalReleaseComObject。 我也尝试过使用这个,但似乎没有什么差别。 我也注意到,第一次testing结束后,Excel进程继续运行几秒钟。 所以我试着睡觉线程,让它在下一次testing开始之前等待Excel完全closures,但是当Excel删除时(即使睡眠定时器还没有完成),它也会立即抛出exception。 无论如何,在这一点上,我正在寻找任何可能的指导,这是不胜感激。 请记住,我不是这些技术的专家。