Tag: automation

Excel互操作迭代通过行,并有条件地删除整行缺less一些行

我正在build立一个Excel自动化程序,我需要有条件地删除特定的行。 例如,我有224行特定的发布者。 在这224行160行是无效的,我需要删除160.但是,当我遍历行并有条件地删除160行只有138被删除。 22行始终保留在表单中。 我找不到原因是什么? 代码写在下面。 List<string> removeList = listofRemovalOfSpecificPublishers; string path = "C:\\Library Automation\\Source\\publishers.xlsx"; var workBookData = GetWorkBookData(path, "Booking Publishers Info"); mWSheet1 = workBookData.mWorkSheet1; Microsoft.Office.Interop.Excel.Range xlRange; xlRange = mWSheet1.UsedRange; for (int i = 1; i <= xlRange.Rows.Count; i++) { string publisher = Convert.ToString(xlRange.Cells[i, 3].Value); //publisher column string bookState = Convert.ToString(xlRange.Cells[i, 8].Value); //status column if […]

如何让VLOOKUPselect到VBA中的最低行?

寻找在单元格中自动插入VLOOKUP公式。 录制macros时,我指示它使用相同的公式填充下面的列。 很好的工作,但是,当VLOOKUP通过更改(更多或更less的行)进行更改时,会出现问题。 在logging时,VLOOKUP下降到表中的最后一行(273)。 不过,我想把它设置好,这样它就会下到最后一行。 这意味着我可以在不同行数的表上运行脚本。 选定的列将保持不变。 Range("AJ2").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC[-20], Previous!R2C2:R273C22,17,FALSE)"

用c#检索Excel自动化函数中的单元格值

我需要检索一个单元格而不是Excel.Range在我的方法。 using Excel = Microsoft.Office.Interop.Excel; … public object vReadNumber(Excel.Range targetRange) { … Doing Something With targetRange … } 任何想法?

如何在Access-to-Excel自动化中正确指定ATP 2.0 XIRR函数调用

如果有人可以帮助,我需要一些正确定义Access 2003中的某些调用参数到Excel 2003 VBA问题。 我试图在Access中使用ATP 2.0 Type Library中的XIRR函数。 我在Access项目中引用了ATP 2.0types库。 下面是一个表单后面的相关VBA代码(带有一点伪代码): Dim aCF as Variant 'this variant will hold the cash flows Dim aDates as Variant 'this variant will hold the dates Dim oATP2 As ATP2.OCATP Set oATP2 = New ATP2.OCATP 'used in the Form_Open event to instantiate the object 在这个模型中,我总是有五个现金stream量来处理:上一个季度的价值stream出,三个月的净收入和当前的季度terminal价值。 (如果涉及更多的元素,我肯定会使用循环结构。)在用户定义的子程序中,我重新调用变体,加载数组并调用XIRR: GetAssetReturn_X() REDIM aDates(4) […]

使用.NET从另一个进程访问实时Excel数据/属性的最快方法

实时(未保存的)Excel数据和C#对象之间的接口的最快捷的方法就是如何有效地访问Excel数据。 根据这个答案,两个build议是使用Excel-Dna或Add-in Express。 我相信Excel-Dna和Add-in Express都需要以Excel加载项运行。 在我的情况下,业务逻辑运行在另一个进程中,并创build一个Excel实例( New Excel.Application() )。 Excel中的更改需要更新内部对象。 从Excel中获取单元格值可以通过DirectCast(Range.Value, Object(,))高效地完成。 不幸的是,这是不可能的其他属性,如Range.Text或Range.NumberFormat 。 正如所料,遍历单元格非常缓慢。 您认为从主进程访问Excel数据的最有效方法是什么? 我想到的一个想法是添加一个加载到Excel(使用说Excel-Dna)聚合数据,然后将其张贴到主应用程序。 由于我没有太多的跨AppDomain编组经验,如果这是一个可行的方法或另一个应该是首选,我将不胜感激评估。

实例化新的Excel过程时出错

这个问题是关于我最近的问题在最大数量的Excel进程? ,但是具有不同的行为。 简而言之:有一个COM +组件在启动时会打开一些excel进程。 句柄被添加到列表中,所以它们不会超出范围或收集垃圾。 如果我在本地运行这个组件(Windows 7 64位,12 Gb的内存),它开始罚款,并打开30个Excel进程没有问题。 如果我在(虚拟)服务器上运行这个组件(windows server 2003 R2 SP2 64位,4 Gb),那么前21个excel进程是正确启动的,但是其余的9个进程没有被创build; 并在事件日志中看到9次以下错误: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005. 所以创build最后的9个excel进程导致了exception,似乎达到了21个excel进程的限制。 如果我在另一台服务器(Windows Server 2003 SP 2,1 Gb RAM)上尝试它,则会创build22个excel进程,另外还有8个失败且具有相同的exception。 我想知道是什么导致Excel进程创build在这些服务器上失败? 编辑:我可以打开30 Excel的实例没有问题,如果我手动打开他们使用开始菜单。 有任何想法吗? 谢谢,L

使用macros调用Excel COM加载函数

如何使用Excelmacros调用COM插件中定义的函数? 基本上我创build了一个Excel COM插件,它做了一些东西。 现在我想通过excelmacros调用这个。 可以做到吗? 要么 是否可以使用macros安装COM Addin?

如何使用PowerShell来复制几个Excel工作表,并创build一个新的?

我有大约70个excel文件,我想合并成一个文件。 每份文件只有一张表格,并遵循以下格式: 行A与标题列AF B行与第一个条目 C行与第二项 在一些床单上最多有150行 我想从每列的AF栏中刮取信息,并将其与来自同一目录中的所有其他文件的信息组合成新文件。 注意:我只想捕获列AF,因为在列G中存在一个是,否数据集来pipe理列F中的下拉列表。 我尝试使用Dugan的复制Excel工作表的答案从一个工作簿到另一个与Powershell,但它导致了一个文件的一部分数据分布在两张表。 这是代码: $file1 = 'C:\Users\Matthew.Andress\Documents\Excel Test\Book1.xlsx' # source's fullpath $file2 = 'C:\Users\Matthew.Andress\Documents\Excel Test\Book2.xlsx' # destination's fullpath $xl = new-object -c excel.application $xl.displayAlerts = $false # don't prompt the user $wb2 = $xl.workbooks.open($file1, $null, $true) # open source, readonly $wb1 = $xl.workbooks.open($file2) # open target $sh1_wb1 = $wb1.sheets.item(2) […]

用EPPlus打开excel而不保存到文件

Rright现在我打开Excel使用System.Diagnostics.Process.Start(fileInfo); 将其保存到文件后打开我的包。 有没有可能打开Excel而不必将文件保存到一个位置? 我希望用户决定是否保存文件。

Microsoft.Office.Interop.Excel具有“坏值”作为默认参数

我正在尝试使用Microsoft.Office.Interop.Excel。 它似乎加载好,但是当我尝试使用它,所有的默认参数不起作用。 这是一个显示所有这些不良值的截图 每当我尝试省略它们时,编译器告诉我该函数需要多于一个参数。 这个function是打开的,如下所示: Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); Workbook wb = excel.Workbooks.Open("ss.xlsx"); 我如何使用这14个参数的默认值? 编辑我在Office 2010中使用C#3.5(2008) 接受的解决scheme: Type.Missing作品我也有这个问题http://support.microsoft.com/default.aspx?scid=kb;en-us;320369问题是,我的窗口是法语,但办公室是英文,所以地狱打破。 解决scheme是 CultureInfo ci = new CultureInfo("en-US"); System.Threading.Thread.CurrentThread.CurrentCulture = ci;