Tag: interop

从C#中断运行Excel VBA

我所读到的一切都表明这是不可能的,但也许有人知道我不知道的东西。 我在C#中开发了用于通过COM或.NET接口运行不同程序的中间件。 其他程序允许您asynchronous运行它们,并在必要时中断计算。 其中一个程序选项是Excel,中间件将启动Excel并运行由用户命名的VBA代码。 我想中断从C#运行Excel VBA,因为我可以用其他程序。 似乎没有办法做到这一点,因为运行(macros)调用被阻止,并在VBA代码完成时返回。 有_Run2(macros)和_Wait()调用,这表明可能有一些方法来做到这一点,但这些是内部使用,所以他们故意logging不足。

在客户端打开时找不到服务器上的Excel文件

使用C#和ASP.NET,我试图通过Microsoft Interop读取服务器上的Excel文件,对其进行一些处理,保存并将其下载到客户机上。 在本地主机上,它工作正常,但在客户机上显示此消息 Server Error in '/' Application. Microsoft Office Excel cannot access the file 'C:\inetpub\wwwroot\ICNMS\Mysheet.xlsx'. There are several possible reasons: • The file name or path does not exist. • The file is being used by another program. • The workbook you are trying to save has the same name as a currently open […]

如何在.NET Interop.Excel.Workbooks.OpenText中指定编码

使用excel.Workbooks.OpenText方法打开文本文件时,我无法find任何有关指定编码(特别是utf-8)的可能性的信息。 我的问题是,我试图打开一个以UTF-8编码的CSV文件,如果没有这个设置,它会加载成一堆的小波。 非常感谢!

需要澄清答案正确清理Excel互操作对象

关于Hans Passant对这个问题的回答… 用IDisposable清理Excel Interop对象 … 他启发我的事实,我不需要遵循两点规则…声明所有COM对象,所以我可以释放通过Marshal.ReleaseComObject时,他们完成。 所以现在我明白我可以在我的Excel代码之后调用GC.Collect和GC.WaitForPendingFinalizers,并且所有对象都会正确释放。 一个,我认为这是伟大的,将减less我写在C#中的macros的长度,但我习惯于释放对象,一旦我完成它们,以最大限度地减lessmacros运行时的内存使用情况。 我应该关心清理物体,还是像汉斯所build议的那样,在macros的末尾进行清理呢? 我通常使用巨大的文件,我的macros将创build许多COM对象来完成任务。

无法创buildExcel.Application的对象

在我的C#应用​​程序中,我导入和导出数据到excel。 我有办公室2013。 我正在使用以下代码: using Excel = Microsoft.Office.Interop.Excel; Excel.Application _excelApp = null; _excelApp = new Excel.Application(); 此代码工作正常,但最近我安装了微软项目专业2013年,它也更新办公室。 在这之后,我在_excelApp = new Excel.Application(); 错误是: 无法将“System .__ ComObject”types的COM对象转换为接口types“Microsoft.Office.Interop.Excel.Application”。 此操作失败,因为IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用失败,原因是以下错误:加载types库/ DLL时出错。 (来自HRESULT的exception:0x80029C4A(TYPE_E_CANTLOADLIBRARY))。

ChartObject.CopyPicture上的未指定错误(从HRESULTexception:0x80004005(E_FAIL)))

我正在使用Microsoft.Office.Interop.Excel(Excel 2010 64 BIT),使用部署在Windows Server 2012 64 BIT上的Windows Service将Excel图表复制到Power Point。 在configuration相同的本地机器上工作正常,但是在生产服务器上部署。 它给出了一个错误,未指定的错误(exception从HRESULT:0x80004005(E_FAIL))这个错误代码时,它复制图表对象,如果我复制数据工作正常。 问题是与chartobject.CopyPicture函数。 我GOOGLE了很多,但什么也没给。

C#生成自动更新Excel图表

我有一个Windows窗体与数据网格视图,我可以input一些数据。 我的C#代码只是从数据网格视图读取这些数据,处理它,然后需要绘制结果。 特别是结果存储在一个列表中。 还有一些额外的数据(这是计算的中间结果)存储在二维数组中。 我卡住的地方是绘图。 我想在Excel中执行此操作,并且每当更改数据网格视图中的某些input时,我都想使其dynamic更新。 下面的代码打开一个Excel工作簿并粘贴A列表中的数据。 我怎么能在列B和C中添加二维数组? 我怎样才能在一个折线图中绘制这些列? 我怎样才能使Excel图表更新自动更新我的数据网格视图中的某些值(不打开每一个新的Excel工作簿)? 感谢您的帮助。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using Excel = Microsoft.Office.Interop.Excel; namespace NewPoject { class plotter { public void plotGraphExcel_2D(List<double> x, double[,] y, double[,] yUP, double[,] yDOWN) { Excel.Application xlApp; Excel.Workbook workbook; Excel.Worksheet sheet; object misValue = System.Reflection.Missing.Value; xlApp […]

清除stream氓Excel应用程序

我有一个作业服务器,可以在Excel中使用MS Query自动化一天中的各种报告。 总是会有一个或多个报告exception结束,导致需要清除的Excel实例处于打开状态。 清理工作使用Interop,如下所示: Excel.Application xl; for (int i = 0; i < 20; i++) { try { xl = (Excelx.Application)Marshal.GetActiveObject("Excel.Application"); xl.Visible = true; xl.Quit(); } catch (Exception ex) { break; } } 它大部分时间都在运行,但是偶尔我会得到一个不想死的Excel实例。 我可以在第二天早上手动杀死任务pipe理器中的进程,但是我还没有find在前一天晚上运行的清理作业中复制该进程的方法。 如果任何人都可以指示我如何添加一个后续任务的方式,以上的工作稍微“粗鲁”,将杀死任何名为EXCEL.exe,这将是欣赏的提示。 此外,我必须为机器上的每个用户运行此作业。 如果有办法,我也欢迎这个反馈。

如何validationExcel互操作对象是否正确清理?

我在我的项目中实例化Excel互操作对象。 我知道清理这些对象需要特别的努力(见这个问题 )。 有没有自动的方法来validation清理是否正确完成? 详细说明,我知道,如果清理工作不正确,Excel.exe可能会在调用Application.Quit后继续运行。 但是,我不清楚这是否是一个可靠的testing条件。 而且,由于一个持续不断的Excel.exe过程只是真正的function障碍的一个症状,如果存在这样的情况,使用更接近根本原因的testing条件似乎更可取。

Excel Interop Chart隐藏图表区域文本

我使用下面的代码创build了以下图表对象(VB.Net和Microsoft Excel Interop) Dim ColumnChart As Microsoft.Office.Interop.Excel.Chart Dim ColumnChartShape As Microsoft.Office.Interop.Excel.Shape = oSheet.Shapes.AddChart() ColumnChart = ColumnChartShape.Chart CCLastRow = oSheet.Rows.End(Excel.XlDirection.xlDown) CCLR = oSheet.UsedRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell).Row CCLC = oSheet.UsedRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell).Column oSheet.Range("$C$3:" & GetExcelColumn(CCLC) & CCLastRow.Row).NumberFormat = "$#,##0_);($#,##0)" ColumnChartSourceRange = oSheet.Range("$B$3:" & GetExcelColumn(CCLC) & CCLastRow.Row) With ColumnChart .ChartWizard(Source:=ColumnChartSourceRange, Title:="Purchases – " + TextPeriod1Name + " vs " + TextPeriod2Name, PlotBy:=Microsoft.Office.Interop.Excel.XlRowCol.xlColumns) .ApplyLayout(9, […]