Tag: excel interop

从C#打开Excel文件

使用Microsoft.Office.Interop.Excel对象从C#使用Excel时遇到问题。 当我尝试打开一个文件写入,我已经在Excel中打开时出现问题。 这最终会导致错误,然后在后台运行Excel的实例。 如何知道该文件在打开之前已经打开? 什么是处理与Excel对象,从而杀死Excel进程的约定?

从Microsoft Excel Interop断开而不会崩溃主机C#程序

我有一个C#程序,使用Excel Interop创build,写入和保存Excel文件。 问题是,如果我没有应用程序保存并closuresExcel文件后立即退出,那么C#应用程序将得到一个未处理的exception并崩溃。 有没有人find办法做到这一点,而能够保持主机C#应用程序打开并运行。 以下是处理涉及Excel Interop的所有内容的代码 class CreateExcelDoc { string newFormString = trialReportForm.newFormString; string fileString=trialReportForm.fileString; int sheetCount; string trialString = trialReportForm.trialString; string dateString = trialReportForm.dateString; string saveString = trialReportForm.saveSting; System.Windows.Forms.Timer excelTimer = new System.Windows.Forms.Timer(); private Excel.Application app = null; private Excel.Workbook workbook = null; private Excel.Worksheet worksheet = null; private Excel.Range workSheet_range = null; public […]

保存重新计算的Excel文件

我需要从我的工作表中删除所有的Excel公式(replace公式与其结果),然后保存文件。 例如 – 而不是B3 + 13我想在单元格中使用OpenXML打开文件 我发现这篇文章http://office.microsoft.com/en-us/excel-help/replace-a-formula-with-its-result-HP010066258.aspx 它的作品 – 保存后没有公式。 我需要在C#中的相同效果。 我在互联网上尝试过很多解决scheme,但是依然没有希望 string source = @"C:\Source\doc.xlsx"; object Unknown = Type.Missing; Workbook doc = newApp.Workbooks.Open( source, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown); newApp.Calculation = Microsoft.Office.Interop.Excel.XlCalculation.xlCalculationManual; doc.ForceFullCalculation = true; newApp.CalculateFull(); newApp.CalculateBeforeSave = true; doc.SaveAs("c:\\temp\\recalc.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, false, false, […]

从另一个表中检测相关的单元格

这是说明我的问题的简化示例。 我在单元格A1公式的Sheet1中: sheet1!A1 cell has formula '=sheet2!C1' sheet2!B1 cell has formula '=C1' 并且当sheet2中的单元格C1发生更改时,我想要检测所有依赖单元格,这意味着来自sheet2的单元格B1和来自sheet1的单元格A1。 但range.Dependents只返回活动工作表中的单元格。 我只得到单元格B1。 在范围互操作API文档陈述,家属将只返回活动工作表的范围。 有没有人知道如何检测所有工作表,所有其他API调用或其他方法的所有依赖?

c#excel Interop.XlDVType.xlValidateList自动完成IncellDropDown

我可以使用下面的代码在单元格中获取下拉列表 Interop.Range validationAddressRange = ws.Worksheet.get_Range(startAddress, endAddress); validationAddressRange.Select(); validationAddressRange.Cells.Validation.Delete(); validationAddressRange.Cells.Validation.Add(Type: Interop.XlDVType.xlValidateList, AlertStyle: Interop.XlDVAlertStyle.xlValidAlertStop, Formula1: formula); validationAddressRange.Cells.Validation.IgnoreBlank = true; validationAddressRange.Cells.Validation.InCellDropdown = true; validationAddressRange.Cells.Validation.ErrorMessage = "Invalid entry. Click 'Retry' to update the cell value, or 'Cancel' to undo the change made to the cell."; validationAddressRange.Cells.Validation.ErrorTitle = "Invalid Data Error"; validationAddressRange.Cells.Validation.ShowError = true; ws.Worksheet.Cells[1,1].Select(); //selects the top-leftmost cell since […]

在Excel超链接中引用无效的错误

我正在使用下面的一段代码添加超链接到一个给定的单元格(这里"A1" ): Workbook workbook = _excelApp.Workbooks.Open("C:\\temp\\test1.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; Range rangeToHoldHyperlink = worksheet.get_Range("A1", Type.Missing); string hyperlinkTargetAddress = "www.bing.com"; Range excelRange = worksheet.UsedRange; object[,] valueArray = (object[,])excelRange.get_Value( XlRangeValueDataType.xlRangeValueDefault); worksheet.Hyperlinks.Add( rangeToHoldHyperlink, hyperlinkTargetAddress, string.Empty, string.Empty, valueArray[1, 1].ToString()); 它添加了超链接。 但是,点击它,它说: Reference not valid 将鼠标hover在单元格文本上时,会将超链接显示为: […]

按标题文本select列并检查列的其余部分是否为空,如果为空则删除?

我有一个类似于下表的格式的Excel表,如果我知道列标题文本“Col2”,那我怎样才能检查该列中的所有单元格是否为空,如果它们是全部删除? *Col1 * Col2 * Col3* ******************** *Val * * Val * *Val * * Val * 我想我需要select一个范围中的标题,并find列的索引与标题中的string相匹配,我也需要使用CountA来计算不是空的单元格? 我想中间还有一个步骤来selectCountA的列,然后我需要删除,如果有0不是空的单元格。 我的工作代码下面打开工作表并调整列的大小: excelApp = new Microsoft.Office.Interop.Excel.Application(); excelBooks = excelApp.Workbooks; excelBook = excelBooks.Open("test.csv", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); excelSheet = excelBook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet; excelCols = excelSheet.Columns; i = 1; […]

从VB.NET应用程序调用Excel时,如何让Excel出现在应用程序的前面?

我有一个VB.NET应用程序,它使用Microsoft.Office.Interop.Excel来简单地打开一个电子表格,抽取一些数据到它,刷新数据透视表中的数据,然后用电子表格呈现给用户。 代码非常简单(error handling未显示): ' Start Excel Application xlApp = New Excel.ApplicationClass ' Get Excel Workbooks xlWorkBooks = xlApp.Workbooks ' Open workbook xlWorkBook = xlWorkBooks.Open(Filename:=sExcelDocFullPath, IgnoreReadOnlyRecommended:=blnIgnoreReadOnly) If Not xlWorkBook Is Nothing Then ' Pump some data over (code not shown) ' Make the first worksheet in the document active CType(xlWorkBook.Worksheets(1), Excel.Worksheet).Activate() 'Return control of Excel to […]

使窗口成为Interop.Excel Com对象的子项

这几乎是我所需要的: 如何在菜单项上的父窗口下打开子窗口点击WPF? 但是,在这种情况下,我的父对象是一个Office.Interop.Excel com对象,而我的子对象是一个System.Windows.Window对象。 我想知道是否有办法从interop.excel对象获取或转换窗口对象。 我正在寻找的行为是,在Excel表格上的popup窗口应该是最上方的Excel应用程序的唯一。 设置属性TopMost不能在这里工作,因为窗口总是成为焦点。

在服务器上运行Excel – C#Interop Excel

我们正在通过C#.NET在Excel模板文件上执行以下操作(按顺序)。 打开Excel模板 从SQL视图中读取数据并写入Excel模板中的工作表 为复制的数据设置命名范围 刷新基于指定范围的数据透视表 密码保护并作为可下载的文件返回。 以下是所考虑的选项:1. Microsoft.Office.Interop.Excel – 驱动程序实现了上述所有function,但是,驱动程序需要Excel客户端工具安装在服务器上,而不是首选的选项,因为我们不能请求为所有的环境安装Excel。 2.第三方产品 – 一个名为Excel Package Plus的免费驱动程序似乎几乎符合我们所有的要求。 除了刷新数据透视表之外,我们几乎可以完成上述操作列表中的所有操作。 3.在现有的excel文件上写一个macros来刷新数据透视表 – 当用户打开该文件造成延迟时,会发生刷新,并且需要刷新数据透视表下载文件。 所以,显然有了以上所有的select,我们碰到了一个障碍。 我想知道是否有可能将Excel模板放在一台安装了excel的服务器上,并从Web服务器访问它。 这样我就可以使用Interop.Excel,而无需在我的Web服务器上安装驱动程序。 我不确定这是否会按预期工作。