Tag: interop

Excel Interop打开Excel的macros,禁用macros

在加载excel文件之前,C#中有没有办法在excel中closuresmacros? 我正在使用Excel Interop加载Excel文件。 我能看到的只是VB.NET的解决scheme。 感谢Nishant

Excel过程仍然在VB.netclosures后运行

我的问题基本上是如何结束使用Excel时运行的Excel.exe进程。 在应用程序中,我打开并使用一对Excel工作簿,然后让用户按照自己的意愿去做,问题是我的应用程序永远不会放弃Excel进程。 如果在closuresexcel之前closures了应用程序,那么在excelclosures的时候这个过程就会结束,否则如果我在closuresexcel之后closures了我的应用程序,那么这个过程将继续运行。 我已经尝试了一些我在互联网上发现的与GC.collect相关的事情,并等待未决的终结器或者沿着这些线路发生的事情,但是都没有成功。 我也可以愉快地closuresexcel过程,唯一的问题是不知道我是否closures了一个用户重要的电子表格,他们忽略了保存还是我的。 我不确定是否有任何代码可以帮助我的答案,但我正在使用microsoft.office.interop.excel获得excel,并且我正在使用已经保存在应用程序资源文件夹中的工作簿。 -编辑- 这是我所尝试过的一切,我知道这有点矫枉过正,但遗憾的是,这还不能结束这个过程 Marshal.ReleaseComObject(FirstWorksheet) Marshal.FinalReleaseComObject(FirstWorksheet) Marshal.ReleaseComObject(SecondWorksheet) Marshal.FinalReleaseComObject(SecondWorksheet) Marshal.ReleaseComObject(ThirdWorksheet) Marshal.FinalReleaseComObject(ThirdWorksheet) Marshal.ReleaseComObject(FourthWorkSheet) Marshal.FinalReleaseComObject(FourthWorkSheet) Marshal.ReleaseComObject(xlRange) Marshal.FinalReleaseComObject(xlRange) Marshal.ReleaseComObject(SecondxlRange) Marshal.FinalReleaseComObject(SecondxlRange) Marshal.ReleaseComObject(thirdxlRange) Marshal.FinalReleaseComObject(thirdxlRange) Marshal.ReleaseComObject(fourthxlRange) Marshal.FinalReleaseComObject(fourthxlRange) Marshal.ReleaseComObject(.activeworkbook) Marshal.FinalReleaseComObject(.activeworkbook) Marshal.ReleaseComObject(excelApplication) Marshal.FinalReleaseComObject(excelApplication) MSExcelControl.QuitExcel() 'A function made by someone else I work with that was meant to close excel's process GC.Collect() GC.WaitForPendingFinalizers() GC.Collect() GC.WaitForPendingFinalizers() – 编辑 – 这是quitExcel方法 Friend Shared […]

撤销Excel插件的操作

在Interop.excel中如何撤消工作? C# – 在VS中制作插件 我想象如下: 我在栈上注册一个撤消方法(由我实现)。 我保存当前状态…在哪里? 当用户使用撤销(ctrl-z)时,我的撤消方法被调用,并且用我存储的数据恢复以前的状态。 虽然不能得到任何好信息。 也许它完全不同?

无法将公式分配给Excel中的单元格区域

在项目中的其他人的代码,我正在修复。 listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j) FormulaMatrix(i, j)总是一个String值。 无论随机/testing的价值,我尝试,成功地分配,除非它是一个公式,例如。 =IF(LENGTH([@Units])>0;[@SalesAmount]-[@DiscountAmount]0) 如果我在公式的开头删除了=符号,它会被正确地赋值,但是这样做没用,因为它不是公式。 @Units , @SalesAmount , @DiscountAmount是引用/列的名称。 所以,当分配公式时,我得到一个exceptionHRESULT: 0x800A03EC 。 我查了一下这个答案 ,以得到解释,并按照其中的一些说明。 我确定我的问题如下: 问题发生在一个单元格中input的函数,它试图更新另一个单元格。 也检出了这个职位。 我尝试了很大的不同(比如把公式没有=然后再跑一遍,把等号),但同样的问题。 我对如何解决这个问题毫无头绪。

如何按单元格值查找列ID?

我有一个巨大的Excel文件,并希望find列“ID”供以后使用。 行1是空的,标题行在第二行。 int ID_Number = ((Range)sheet.get_Range("A2", sheet.UsedRange.Columns.Count).Find("ID Number", Missing.Value, XlFindLookIn.xlValues, XlLookAt.xlPart, XlSearchOrder.xlByColumns, XlSearchDirection.xlNext, true, Missing.Value, Missing.Value) ).Column; int Size = ((Range)sheet.get_Range("A2", sheet.UsedRange.Columns.Count).Find("Size", Missing.Value, XlFindLookIn.xlValues, XlLookAt.xlPart, XlSearchOrder.xlByColumns, XlSearchDirection.xlNext, true, Missing.Value, Missing.Value) ).Column; 未处理的exception:System.Runtime.InteropServices.COMException:从HRESULTexception:0x800A03EC 有时候,excel中的列顺序会发生变化,并且想要通过din来处理,而不是通过定义列M(例如Size)来处理。

如何正确清理C#中的互操作对象

这是如何正确清理C#中的Excel互操作对象的问题 。 gyst是在Excel命名空间内使用链接调用(例如,ExcelObject.Foo.Bar())防止COM对象的垃圾收集。 相反,应该显式创build一个对每个使用的COM对象的引用,并使用Marhsal.ReleaseComObject()明确地释放它们。 仅在特定于Excel COM对象的链接调用之后不释放COM对象的行为? 每当一个COM对象被使用时,应用这种模式是否有点矫枉过正?

使用Interop在C#中打开Excel文件时出现exception

我有一个运行在服务器上的程序,每天从网站上下载一个.xls文件,然后打开它,然后将其转换为.csv,以便能够正确parsing并添加到数据库。 当我在本地PC上运行它时,一切正常,并且它在服务器上的大部分时间都可以正常工作,但是一周一次或两次,我得到以下exception: 发生exception:System.Runtime.InteropServices.COMException(0x800A03EC):从HRESULT:0x800A03EC在Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename,Object UpdateLinks,Object ReadOnly,Object Format,Object Password,Object WriteResPassword, Object IgnoreReadOnlyRecommended,Object Origin,Object Delimiter,Object Editable,Object Notify,Object Converter,Object AddToMru,Object Local,Object CorruptLoad) 这是一个代码片段: Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook wbWorkbook = app.Workbooks.Open(_dir + _fileNameTrim + ".xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wbWorkbook.SaveAs(_dir + _fileNameTrim + ".csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, […]

如何使用不同的名称复制工作表 – C#和Excel Interop

我想简单地复制我的工作簿中的一张,并给它一个不同的名字。 var pointName1 = workbook.Worksheets["PointName1"] as Worksheet; pointName1.Copy(); // How do I access this newly created sheet? 理想情况下,我希望能够写出这样的方法 pointName1.CopyTo("New Sheet"); 其中“新表”是“PointName1”的重命名副本。 有时PointName1将成为工作簿中的唯一工作表,其他时间将会有其他工作簿。

Microsoft Office互操作程序集引用

我有一个在Visual Studio 2005中开发的应用程序,我使用ClickOnce进行部署。 我的解决scheme包含两个项目 – 用VB编写的用户界面层和用C#编码的类库。 我的C#类库有一些代码使用Outlook和Excel互操作程序集(Microsoft.Office.Interop.Outlook和Microsoft.Office.Interop.Excel,都是版本11)。 这是我的问题。 虽然我没有find这是绝对的,我的理解是,你必须有相应版本的Office应用程序(Outlook / Excel)才能安装使用Interop程序集的应用程序。 它是否正确? 如果(1. =是)那么 你将如何处理你的应用程序使用Interop汇编程序的情况,只有几个function,只有less数总用户群才能使用? 为什么我必须要求我的应用程序的每个用户安装Microsoft Office,如果只有一些用户需要使用这些function? 这些互操作程序集只是.dll文件,所以它们与其他软件不同之处在于,无论客户端安装了什么软件,您都不能只将该文件发布到项目中并满足参考要求。 (很明显,我对GAC的理解很差,对Visual Studio的行为有影响)。我很乐意编写自己的代码来检查所需的Office软件是否存在less数使用它们的function。 没有办公室,没有访问function… 其他 如果我对此的理解不正确,那么如何设置我的引用和ClickOnce设置,以便用户在安装尝试时不会遇到以下错误? “无法安装或运行应用程序,应用程序需要首先在全局程序集caching(GAC)中安装程序集版本11.0.0.0。 请联系您的系统pipe理员。“ 我已经尝试将我的Interop引用CopyLocal属性设置为True和False。 在我的ClickOnce应用程序文件列表中,我已经尝试将这些程序集设置为包含,排除和先决条件。 在我的研究中,我已经看到有些人将这些引用指向* C:\ WINDOWS \ assembly \ GAC *,指向* C:\ Program Files \ Microsoft Visual Studio 9.0 \ Office \ PIA \ Office11的Visual Studio工具*但我还没有find改变参考path的方法。 根据http://msdn.microsoft.com/en-us/library/ez524kew(VS.80).aspx你不能添加来自GAC的引用,所以其他人如何pipe理它? 我已经尝试从* C:\ Program Files […]

Excel的DLL为Microsoft.Office.Interop.Excel

我们想在我们的Web应用程序中使用Microsoft.Office.Interop.Excel。 一切工作正常在我们的本地机器上,但在我们的testing机器上,我们遇到了问题。 它没有安装Visual Studio或Office。 我们使用的是.NET Framework 2.0,服务器在Windows Server 2003上运行的是IIS6。 有没有一个DLL需要安装在机器上或添加到Web应用程序的斌?