Tag: com

编码问题,同时通过PHP COM读取Excel文件

我正在阅读一个Excel电子表格与PHP COM实用程序,一切工作正常,除了有一些在Excel文件中的单元格具有不同的语言数据。 当我通过PHP Com读取这些数据时,它显示为??????? $ExlApp = new COM ( "Excel.Application" ); $workbook = $ExlApp->Workbooks->Open ( 'f:\dev\htdocs\excel\testfile.xlsx' ); $worksheet = $workbook->worksheets ( 1 ); $done = false; $row_index = 1; while ( $done == false ) { $english = $worksheet->cells ( $row_index, 1 )->value; $dari = $worksheet->cells ( $row_index, 2 )->value; if ($english != '') { […]

Delphi Excel COM-Addin

我在Delphi 2006中写了一个MS Excel COM-Addin。我在我的开发机器上安装了Excel 2007。 我作为一个ActiveX库开始项目,然后从Delphi ActiveX项目菜单中添加一个自动化对象。 在我的自动化对象中,我定义了IDTExtensibility2接口 IDTExtensibility2 = interface(IDispatch) ['{32E456FC-C710-43AA-9ACA-DDE8F132B91B}'] function OnAddinsUpdate(var w_Custom: OleVariant): HResult; stdcall; function OnBeginShutDown(var w_Custom: OleVariant): HResult; stdcall; function OnConnection(const w_Application: IDispatch; w_ConnectMode: Integer; const w_AddInInst: IDispatch; var w_Custom: OleVariant): HResult; stdcall; function OnDisconnection(w_DisconnectMode: Integer; var w_Custom: OleVariant): HResult; stdcall; function OnStartupComplete(var w_Custom: OleVariant): HResult; stdcall; end; 并在从TAutoObject派生的类中实现接口。 在我打电话的单位的初始化部分 […]

Python和Excel:尽pipe有XlSaveConflictResolution值,覆盖现有文件总是会提示

我使用Python程序中的Excel.Application COM对象来打开一个CSV文件并将其保存为一个Excel工作簿。 如果目标文件已经存在,那么系统会提示以下消息:“在这个位置已经存在一个名为'…'的文件,你想replace它吗? 尽pipe事实上我已经把XlSaveConflictResolution的值设置为xlLocalSessionChanges ,但是这个消息应该会自动覆盖这些更改而不会提示 – 或者我想。 我正在使用Microsoft Office Excel 2007(12.0.6535.5002)SP2 MSO和ActivePython 2.6.5.14。 我已经尝试使用常量和整数的所有三个XlSaveConflictResolution值。 我还没有尝试不同版本的Excel。 这是一个代码片段: import win32com.client xl = win32com.client.gencache.EnsureDispatch("Excel.Application") wb = xl.Workbooks.Open(r"C:\somefile.csv") wb.SaveAs(r"C:\somefile.xls", win32com.client.constants.xlWorkbookNormal, \ None, None, False, False, win32com.client.constants.xlNoChange, \ win32com.client.constants.xlLocalSessionChanges) 以下是Microsoft关于Excel工作簿对象SaveAs方法的规范: http : //msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(VS.80).aspx 这可能是一个新的“function”在Excel 2007中,或者我只是做错了什么?

需要在C#中查找Excel范围的起点和终点

我试图从COM读取从C#中的Excel文件,并可以得到它打开并加载就好了。 但是,我不想使用表单上的所有数据(每月展开一次),只是从表单顶部开始的一个子集(第3行用于标题,第4行用于数据)并且到达结尾。 我现在可以得到一个范围代表整个数据集为Excel.Worksheet.UsedRange ,但接下来我需要或者操纵这个下降到所需的范围,或(最好)find终点进入我的实际数据的另一个范围恢复。 任何人都可以告诉我如何做这两个? 谢谢。

VSTO Excel Com添加function区不加载

我正在使用VS 2010开发Excel 2007 COM加载项。 因为它是VS 2010 Office Project,所以它的目标是.NET 4.0客户端框架。 我添加了一个名为MyRibbon的新function区(XML)项目,因此默认文件名为ThisAddIn.cs,MyRibbon.cs和MyRibbon.xml。 一切都很好。 它以.vsto扩展名发布。 当我安装加载项(通过提供的Setup.exe)时,它将在Excel中安装,并在COM加载项列表中进行检查。 它也被指定在启动时加载。 但是,首先打开Excel或打开Excel文件不会将该选项卡添加到function区。 我可以告诉加载项加载,因为它将“COM加载项加载”在第一个工作表的第一个单元格中。 看起来好像CreateRibbonExtensibilityObject()没有被调用。 有没有人有任何想法,或可以告诉我如何显示任何可能被埋葬的错误消息? 下面的细节。 我已经添加了CreateRibbonExtensibilityObject()的覆盖: protected override Office.IRibbonExtensibility CreateRibbonExtensibilityObject() { return new MyRibbon(); } MyRibbon.xml看起来像这样,一个选项卡内的三个button: <?xml version="1.0" encoding="UTF-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load"> <ribbon> <tabs> <tab id="TabAdvComTracking" idMso="TabAdvComTrackingMso" label="Adv.com Tracking"> <group id="groupPrepare" label="Prepare"> <button id="GenerateNewWorkbook" idMso="GenerateNewWorkbookMso" enabled="1" size="large" onAction="GenNewWorkbook" label="Make" /> <separator […]

Excel从两个不同的AppDomain调用.NET自动化服务器?

我有一个Excel插件(用C#编写),它是一个静态variables,位于单例数据caching的核心: static DataCache _instance; 这是通过三种不同的代码path访问的: VSTO ribbon-bar上的事件处理程序将初始化实例,并将其读取以在辅助对话框中显示 RTD服务器(声明为[ComVisible]并实现IRtdServer接口的类)使用RTD公式的数据 一组自动化调用(在声明为[ComVisible]的另一个类中实现)也可以对数据进行操作。 这些是通过在Excel工作表上的button被点击时调用的VBA代码调用的。 编辑(#3): 根据这些代码path被首先调用的顺序,我发现我的代码在两个独立的AppDomain中运行。 来自function区事件处理程序的所有访问都发生在名为“MyPlugIn.vsto”的AppDomain中。 如果这是对我的COM对象的第一次访问,那么所有的后续调用(包括RTD调用)都发生在同一个AppDomain中。 但是,如果第一次访问是通过RTD接口进行的,则该调用和所有后续的RTD调用都发生在名为“DefaultDomain”的AppDomain中。 (使用embedded式RTD公式加载保存的文档时会发生这种情况。)通过工具栏初始化和操作DataCache的后续调用仍然出现在“MyPlugIn.vsto”AppDomain中。 这意味着RTD公式总是像DataCache未初始化一样运行(因为在一个AppDomain中设置的静态variables在其他AppDomain中保持未初始化)。 看来,VSTO初始化时,Excel或VSTO正在创build一个AppDomain。 在此初始化之前通过COM互操作创build的对象位于默认AppDomain中,而之后创build的对象位于VSTO AppDomain中。 我如何确保使用相同的DataCache实例,而不pipe在哪个AppDomain中创build了我的RTD服务器对象?

Python Win32Com&Excel.Application无法在计划程序上保存

我遇到了使用win32com和任务计划程序的问题。 即使脚本执行成功,其他方面也不会发生Excel文件保存操作 。 这是在自动化机器上运行; 没有活动的login会话。 看下面的事实。 我是Win32COM新手,所以我可能不知道什么时候以及如何在Python中使用它。 背景 我有一个Python脚本,通过任务计划程序运行一夜,该程序从内部数据库收集数据并将其输出到报告中。 原来的脚本使用csv来输出数据,但我了解到win32com使用Excel VBA命令创buildxlsx文件。 我使用代码扩展了现有的chronjob以包装使用pymysql现有数据库操作: import win32com.client as win32 try: excel = win32.gencache.EnsureDispatch('Excel.Application') excel.DisplayAlerts = False wb = excel.Workbooks.Add() basesht = wb.Sheets('Sheet1') except: #E-mail notification of failure. sys.exit() 该脚本经历了几分钟的数据库操作。 一些用csv导出为.csv文件,另外一些则创build一个新的表格并使用下面的代码导出采集的数据: #For Each Report in Report Set (DB = Object extending pymysql) resultSet = db.qryfetchall() headers = list(resultSet[0].keys()) r, […]

使用Python的comtypes库将查询表添加到Excel的问题

我试图在Excel电子表格中使用Python的comtypes库创build一个QueryTable,但得到一个相当无误的错误… 在vba中(在工作簿中的模块中),以下代码正常工作: Sub CreateQuery() Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim ws As Worksheet Dim qt As QueryTable Set ws = ActiveWorkbook.Sheets(1) Set con = New ADODB.Connection con.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\to\Db.mdb;") Set rs = New ADODB.Recordset rs.Open "Select * from [tbl Base Data];", con Set qt = ws.QueryTables.Add(rs, ws.Range("A1")) qt.Refresh End Sub 但是下面的Python代码: import […]

我开始使用pywin32的Excel,有没有什么好的文档,我可以“跳转”的Excel命令?

不是100%确定如何使用COM工作,但我需要在我的情况下使用它,以支持从.xls和.xlsx文件读取。 我发现了一些链接,下面链接了一些代码,但是我还没有find列出或解释这些命令的任何地方。 http://www.pythonexcels.com/Basic_Excel_Driving_with_Python.html pywind32的文档在这里: http://docs.activestate.com/activepython/2.7/pywin32/PyWin32.HTML 但我不知道从哪里开始寻找所有这些。

在Excel工作表上直接使用ActiveX控件需要哪些要求?

Microsoft Office支持文章“ 添加或注册ActiveX控件 ”说: 重要提示:并非所有的ActiveX控件都可以直接在工作表上使用; 有些只能用于Microsoft Visual Basic for Applications(VBA)用户窗体。 当您使用这些控件时,如果您尝试将它们添加到工作表,Excel将显示消息无法插入对象 。 但是,我无法在任何地方find必要的 , 足以使控件直接在工作表上使用的要求。 我创build了一个新的C ++ / ATL项目,我添加了一个ATL控件,接受整个默认值。 编译,构build和注册控件后,它出现在Excel的“更多控件”列表中(在开发人员>插入> ActiveX控件>更多控件…下访问),但试图插入到工作表中时,可以看到“不能插入对象“错误。 我必须做出什么修改才能解决这个问题? 要么 Excel对ActiveX控件的要求在哪里有logging? 对于它的价值,我已经validation了由向导生成的控件可以正常工作(使用从Visual C ++ 2008示例包构build的ActiveX控件testing容器进行testing )。 此外,我知道ATL控件向导的“外观”选项卡的文档描述了“可插入”checkbox,如下所示: select此选项可让您的控件显示在Word和Excel等应用程序的“插入对象”对话框中。 您的控件可以通过任何支持embedded对象的应用程序通过此对话框插入。 但是,这个checkbox(只是简单地将“Insertable”子项添加到registry中)只会导致控件出现在Insert> Text> Object对话框中,为了避免疑惑,同样的错误产生的方式。 我试图插入一个工作(Forms 2.0)控件时试图插入我的控制对比当前正在比较Excel的执行path的痕迹。 关键区别似乎在于VBE7.dll加载types库(其中OLE / COM对象查看器能够从我的DLL正确加载 – 但Excel执行完所有相同的读取之后,它会在写出EXD之前中止)…我现在正在通过一些程序集挖空心思,希望我能弄明白 – 但是肯定有人为Excel创build了一个工作控件,并且知道我错过了什么可以使我免于这种痛苦?! Microsoft Windows 10 Pro v1511(10.0.10586.164)64位 Microsoft Excel 2016 MSO(16.0.4312.1000)64位 Microsoft Visual […]