Tag: com

添加迷你曲线来优化matlab

用MATLAB,我可以启动一个COM服务器,并以编程方式写入Excel工作簿。 然而,我不能找出一种方法来添加迷你图(build议appreaciated): % Open new workbook excel = actxserver('excel.application'); excel.visible = 1; wrkbook = excel.Workbooks.Add(); sheet = wrkbook.Sheets.Item(1); % Write some data sheet.Range('B1:Z1').Value = rand(1,25); 这是问题: % Add column sparklines to 'A1', type 'xlSparkColumn' and DataSource: 'B1:Z1' sheet.Range('A1').SparklineGroups.Add('xlSparkColumn','B1:Z1') 我得到以下错误: Error using Interface.Microsoft_Excel_15.0_Object_Library.SparklineGroups/Add Error: Object returned error code: 0x800A03EC closures/清理 % Close without saving wrkbook.Saved = […]

作为parameter passing时,值为空

我正在从excel电子表格阅读大量格式的文本。 当我做下面的事情时,一切正常。 Function Read-From-Excel { Param( [string]$fileName, [string]$sheetName="Sheet1" ) $excelObject = New-Object -ComObject Excel.Application $excelObject.Visible = $FALSE $excelBook = $excelObject.Workbooks.Open($fileName) $excelSheet = $excelBook.Sheets.Item($sheetName) $intRowMax = ($excelSheet.UsedRange.Rows).count $col = 1 $row = 1 $headers= @() While ($TRUE) { $column = $excelSheet.cells.Item($row, $col).Text If ($column -eq "") { Break } $headers += $column $col ++ } $text […]

实现Excel UDF的VB.NET COM Server不可用可选的Excel.Range调用

版本 Excel 2007(12.0.6425.1000)SP2,Visual Studio 2008与VB.NET,Windows Vista 发条 我有一个用VB.NET编写的具有以下签名的Excel UDF: Public Function NonExcelName(ByVal A As Integer, _ ByRef B As Range, ByRef C As Range, _ Optional ByVal D As Integer = 1, _ Optional ByVal E As Double = 0, _ Optional ByVal F As Range = Nothing, _ Optional ByVal G As Boolean = […]

如何在.NET中处理事件时释放所有的COM对象

我在C#中使用COM Excel应用程序类。 我处理了WorkbookBeforeClose 。 但是现在我无法正确释放COM对象。 请注意,在处理此事件之前,我已经正确地释放了COM对象,并且在注释那部分代码时,我的应用程序正常工作。 什么COM对象没有从内存中释放,以及如何正确释放它? 编辑:我做了什么: public void Init() { … application = new Excel.Application(); application.WorkbookBeforeClose += new Excel.AppEvents_WorkbookBeforeCloseEventHandler(application_WorkbookBeforeClose); } … void application_WorkbookBeforeClose(Excel.Workbook Wb, ref bool Cancel) { if (WorkbookBeforeClose != null) { ExcelCloseEventArgs args = new ExcelCloseEventArgs(); WorkbookBeforeClose(this, args); Cancel = args.Cancel; } else Cancel = false; } … private void closeExcel() […]

你能告诉Excel不要重新计算其内容是基于COM组件的单元格吗?

我有一个使用C#组件的Excel电子表格。 该组件是一个Excel加载项,它通过单元格的公式函数调用。 即 =MyCalculation(C24) 单元格C24中有一个硬编码的值,即文本从不改变,不基于公式。 但是,如果我testingMyCalculation的C#代码,则会发现在安装过程中每个具有该公式的单元格被称为3次。 我已经caching了C#端的计算,但是我想知道是否有告诉Excel这个值永远不会改变,只需要查看一次? 我认为,如果它的依赖不会改变,那么它不会重新计算值。

如何检查是否有评论

我有一个.xlsx文件。 其中的一些单元格有评论哪些内容将在此后使用。 如何检查,遍历每个单元格,如果它有一个评论或不? 这个代码(我试图迭代第三列,没有别的)返回一个错误: import win32com.client, win32gui, re xl = win32com.client.Dispatch("Excel.Application") xl.Visible = 1 TempExchFilePath = win32gui.GetOpenFileNameW()[0] wb = xl.Workbooks.Open(TempExchFilePath) sh = wb.Sheets("Sheet1") comments = None for i in range (0,201,1): if sh.Cells(2,i).Comment.Text() != None: comment = sh.Cells(2,i).Comment.Text() comments += comment print(comments) input() 我对Python很新,对我的英文感到抱歉。 谢谢! :3

我需要这个命令来从python解除一个Excel文件的保护

我们从客户端获得一个Excel文件,该客户端具有开放式保护功​​能并启用了写保留保护function。 我想删除保护,所以我可以用python xlrd模块打开Excel文件。 我已经安装了pywin32包来通过COM访问Excel文件,我可以用我的程序打开它,提供两个密码,保存并closures文件没有错误。 我正在使用MSDNnetworking中描述的解除保护命令,他们没有失败,但他们也没有删除保护。 我的程序完成后,保存的文件仍然需要两个密码来打开它。 以下是我到目前为止: import os, sys impdir = "\\\\xxx.x.xx.x\\allshare\\IT\\NewBusiness\\Python_Dev\\import\\" sys.path.append(impdir) from UsefulFunctions import * import win32com.client wkgdir = pjoin(nbShare, 'NorthLake\\_testing') filename = getFilename(wkgdir, '*Collections*.xls*') xcl = win32com.client.Dispatch('Excel.Application') xcl.visible = True pw_str = raw_input("Enter password: ") try: wb = xcl.workbooks.open(filename, 0, False, None, pw_str, pw_str) except Exception as e: print "Error:", str(e) […]

从MemoryStream运行Microsoft Excel应用程序

有人知道,是否可以从未保存的文件打开Microsoft Excel? 从内存stream例如? var workbook = new XLWorkbook(); var worksheet = workbook.Worksheets.Add("Sample Sheet"); worksheet.Cell("A1").Value = "Hello World!"; using (var ms = new MemoryStream()) { //IS IT POSSIBLE TO OPEN EXCEL BUT FROM UNSAVED MEMORYSTREAM? //Process.Start(EXCEL MS HERE); } 或者,将文件保存到某个临时文件夹,然后通过Excel将其打开,但是用户需要“保存”和“另存为”操作。 主要目标:使用准备好的工作表从C#代码打开Microsoft Excel应用程序,并说用户必须保存它,就像这个文档是一个新的。

asp excel错误80040154

我有一个与我的asp项目(C#)的问题。 我遇到以下错误:使用CLSID {00024500-0000-0000-C000-000000000046}检索组件的COM类工厂失败,原因如下:80040154当我尝试从服务器生成excel文件时抛出。 我已经看到一些关于它的post,我不知道他们是否适用于我,也不能解决我的问题。 让我告诉你我的代码并解释。 using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; private Excel.Application oXL; private Excel._Workbook oWB; private ExcelFile f; protected void bExcel_Click(object sender, EventArgs e) { if (Session["mode"] == null) Response.Redirect(accueil); // Set the values oXL = new Excel.Application(); oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value)); f = new ExcelFile((Excel._Worksheet)oWB.ActiveSheet); oXL.Visible = true; /* displaying data from a […]

COM:excelApplication.Application.Quit()保留该过程

我正在使用COM集成从Python 2.7驱动MS Excel。 我注意到一个奇怪的事情:当我运行以下代码: import win32com.client excelApp = win32com.client.dynamic.Dispatch('Excel.Application') EXCEL.EXE进程出现在进程列表(哪个视图使用Windows任务pipe理器或subprocess.Popen('tasklist') )如预期。 然后我做所有我需要做的事情没有问题。 但是,当我closuresExcel时: excelApp.Application.Quit() 这个过程依然存在,即使我closures了启动它的Python解释器(这种情况是有道理的,因为Excel运行在不同的过程中,但是可以肯定)。 我发现终止这个过程的唯一方法是手动,使用任务pipe理器,或通过调用: subprocess.Popen("taskkill /F /im EXCEL.EXE",shell=True) 强制/F标志是必要的,否则进程不会终止。 这不是一个真正的问题(我希望),但我想问,当我第一次编辑文档“正常”,然后从python调用Excel,然后再“正常”,这是否会导致问题? 可能连续数十次(几十次)? 我担心的是创build冲突版本的文件等。或者我应该只是终止EXCEL.EXE过程每次只是为了安全? 另外我注意到subprocess.Popen("taskkill")不会返回任何可以catchexception和anylse(或者我在这里做些什么?)。 我特别感兴趣的是区分“不存在的进程”kill命令和终止进程的失败尝试。