Tag: com

阅读大型Excel表(猜测大小)

我正在使用pywin32来读写excel。 现在我所知道的唯一方法就是访问Range.Value,但是我通常并不知道excel表格的大小。 所以目前我一行一行地读,直到find一条完全空的行。 这可能很慢。 当然,我会尝试像阅读数据块的技巧 – 那么我必须find一个最佳的块大小。 你知道另一种方法(也许一些内部的Excel函数)或更快的其他方法吗?

Open XML SDK如何读取大型Excel文件?

所有, 我们计划在Visual Studio C#(开发客户端应用程序)中使用Microsoft的Open XML SDK读取大的excel文件,导入数据并input到数据库。 它的performance怎么样? 你认为使用COM更好吗? 或者使用其他商业图书馆来执行此操作? 非常感谢,非常感谢你的build议

C#正确方法closures多个Excel对象与Excel进程销毁

我有一个C#控制台程序。 运行时,它实例化一些Excel对象,如:(openExcelO)。 当程序运行完毕,我有一个方法closuresExcel(closeExcel),并且应该正确清理Excel进程。 在任务pipe理器中,我可以看到剩下的Excel剩余部分。 closures例程是从互联网的例子拼凑在一起: private void openExcelO (string dir) { try { xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(dir + "PortfolioOptimization5.xlsm", 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlMarkowitz = (Excel.Worksheet)xlWorkBook.Sheets["Markowitz"]; xlWeights = (Excel.Worksheet)xlWorkBook.Sheets["Weights"]; } catch (Exception ex) { ReportError("PortfolioOptimization", "openExcel", ex.ToString()); } } private void closeExcel […]

ATL COM为excel添加一个函数

我试图build立一个C ++类的ATL COM,并通过自动化添加到Excel。 我发现了一些指南,但我有很多问题,其中一个是我的DLL没有在自动化比较,如果我尝试添加它Excel的说有没有包含服务器或没有权限的问题。 有人能给我一个指导吗? 我正在使用Visual Studio 2012.谢谢。

pythonwin32 COMclosuresexcel工作簿

我在COM中打开了几个不同的工作簿(excel xlsx格式),并混淆了它们。 随着程序的进展,我希望closures一个特定的工作簿,但保持rest。 如何closures一个工作簿? (而不是整个Excel应用程序) xl = Dispatch("Excel.Application") xl.Visible = False try: output = xl.Workbooks.Open(workbookName) output2 = xl.Workbooks.Open(workbook2Name) except com_error: print "you screwed up blahblahblah" exit() #work on some stuff #close output but keep output2 open

为什么systemprofile需要Desktop文件夹来打开excel文件

在我们在systemprofile文件夹中创build名为Desktop的文件夹之前,我们无法使用ASP.net打开Excel工作簿。 解决方法是在C:\Windows\SysWOW64\config\systemprofile\创build一个名为“Desktop”的文件夹C:\Windows\SysWOW64\config\systemprofile\ 错误消息是: System.Runtime.InteropServices.COMException(0x800A03EC):Microsoft Office Excel无法访问文件“c:\ temp \ test.xls”。 有几个可能的原因: ?文件名或path不存在。 •该文件正在被另一个程序使用。 ?试图保存的工作簿与当前打开的工作簿具有相同的名称。 有没有人知道这个解释? 如果在这里find这个tipp: http ://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows- 服务器-2008-64?论坛= innovateonoffice 但我不明白如何将这个桌面文件夹归因于一般的Excel或InteropServices。 一些版本信息: 操作系统:Windows Server 2012 IIS:Internet信息服务(版本8.0.9200.16384)Excel:Excel 2013

是否有可能创build/编辑从Python的Excelmacros?

我目前正在开发一个项目,这个项目需要我编写一个(看似无止境的)一系列macros来复制由我们的分析人员devise的数据透视表。 细节发生了变化,但是从示例到示例的代码基本相同。 我想编程生成基于less数选项的vba代码,然后将macros添加到给定的工作表。 是否有可能使用win32com或其他创build一个Excelmacros? 是否有可能从另一个Excelmacros创build一个Excelmacros? 任何其他的想法? 项目背景,我有一个Python脚本,执行以下操作: 拉取谷歌分析数据 做各种分析 将结果写入excel 触发一个预先写好的macros,将数据转换成一个精美格式的数据透视表 通过电子邮件发送给可能没有真正阅读的人

使用PowerShell从Excel文件读取注释

我的search只导致类似的VBA,但我有一个不同的方法,在PowerShell中这个问题。 我是PowerShell的新手,我想读取Excel文件中的所有注释,并将它们保存为CSV文件。 除了阅读评论之外,一切都有效。 评论是com对象。 我如何从COM对象获得实际的评论? 这是相关代码的一个片段。 我不能用invokemember来做,但也许我做错了。 提前致谢。 ForEach ($File in (Get-ChildItem $folder -Include *.xls, *.xlsx, *.xlsm -Recurse)) { $sh=$document.Sheets.Item($i) $comments = $sh.comments foreach ($comment in $comments) { #[System.__ComObject] <— Must get this value | Add-Content -file.csv } } 我也打开其他方法来完成这一点。

隐藏打开的Excel文件

这是我的问题: 我开发了一个程序,使用Microsoft.Excel COM组件来读取/写入Excel文件。 那么,我的应用程序是做的很好,但是当我打开,例如,另一个文件直接与我的程序正在运行时,我的应用程序使用的文件(S)出现在Excel中。 我不想要这个。 我也尝试了Excel Application类的Visibility属性,但这不是解决scheme,它只是不起作用。 注:我已经检查了这个问题了。 限制对C#程序打开的excel文件的访问 但是,实际上却没有适当的解决办法。

如何获得某个Excel进程的窗口或进程句柄?

我们如何获得属于我们创build的Excel应用程序实例的Excel进程的应用程序窗口句柄或进程句柄? 我们正在使用Interop.Excel.dll版本1.3.0.0。 应用程序类似乎没有HWnd属性来调用。 请注意,找不到名称为excel.exe的所有进程是无法解决的,因为我们有许多并行运行的excel实例,我们只想closures某个实例。 Excel.Application app = new Excel.Application(); // .. do something with excel here app.Quit(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); // this is in some cases still not enough to get excel killed uint processID; GetWindowThreadProcessId((IntPtr)hWnd, out processID); // how to get HWnd from this Excel application? Process.GetProcessById((int)processID).Kill();