Tag: excel interop

Excel Interop工作表副本引发exceptionHRESULT:0x800A03EC

我在使用Interop在Excel 2003中复制工作表时遇到问题。 该代码适用于30-40个副本,然后抛出exception“HRESULTexception:0x800A03EC”。 下面的testing代码已经包含了http://support.microsoft.com/kb/210684/en-us中提供的修补程序,但没有成功。 有没有人知道这个解决方法? 提前致谢 using Excel = Microsoft.Office.Interop.Excel; private void button2_Click(object sender, EventArgs e) { string template_path = @"c:\temp\template.xlt"; string filename = @"c:\temp\testxl1.xls"; if (File.Exists(filename)) File.Delete(filename); object missing = System.Reflection.Missing.Value; System.Globalization.CultureInfo my_culture = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); Excel.ApplicationClass xlapp = new Excel.ApplicationClass(); xlapp.Visible = true; xlapp.UserControl = true; Excel.Workbook xlwb = xlapp.Workbooks.Add(template_path); […]

Excel互操作实例将不会closures

我正在使用Excel Interop。 在我得到的一个方法的开始,我分配了一个新的应用程序的实例,在它的结尾,我试图释放它,但是当我看着TaskManager,我仍然可以看到Excel打开。 这是代码: 类成员: private Excel.Application _app; 用法: public void MethodApp() { _app = new Excel.Application(); …. …. FreeApplicationResources(); } private void FreeApplicationResources() { _app.Quit(); Marshal.ReleaseComObject(_app); } MethodApp可以运行多次,并以与调用次数相同的数量打开实例。 为什么Excel不能closures?

F#不识别interop.office.Excel.dll

在VS2015中添加对interop.office.Excel.dll的引用后,F#(4.0,.net 4.6.1)仍然无法识别Excel.dll下的types。 对Excel.dll的引用看起来像 作为比较,我创build了一个具有相同引用的C#项目,没有find引用的问题。 奇怪的是,如果引用excel dll下的工作簿对象,F#代码将会编译。 (我只是把它看作是一个dynamictypes)只有intellisense不工作。 有什么build议? 谢谢

为什么试图自动调整工作表的宽度或工作表上的单个列失败?

我有一列的内容被截断,我想避免必须双击右栏的阴沟来查看数据。 首先,我尝试自动安装整个shebang: private void PopulatePivotTableDataSheet() { if (null == _produceUsagePivotDataList) return; AddColumnHeadingRowPivotData(); foreach (ProduceUsagePivotData pupd in _produceUsagePivotDataList) { AddPivotData(pupd.ItemCode, pupd.ItemDescription, pupd.Unit, pupd.MonthYear, pupd.Quantity, pupd.TotalPrice, pupd.IsContractItem); } _xlPivotDataSheet.Cells.AutoFit(); } …但最后一行失败,“范围类失败的AutoFit方法” 然后,我尝试将其应用到问题列中,如下所示: private void AddPivotData(String ItemCode, String ItemDescription, String Unit, String MonthYear, int Quantity, Decimal TotalPrice, Boolean IsContractItem) { var itemCodeCell = _xlPivotDataSheet.Cells[_lastRowAddedPivotTableData + 1, 1]; itemCodeCell.Value2 […]

C#/ Excel:将Excel范围转换为具有正确数据types的数组

我用Excel应用程序( Microsoft.Office.Interop.Excel )打开* .htm文件。 这是parsing优秀! 所以我可以使用它。 为了更快的速度,我试图从Excel范围获取数据并插入到System.Array中并使用它: Excel.Range range = ExcelWorksheet.get_Range("A1", "H1500"); // get all values System.Array dataArray = (System.Array)(range.Cells.Value2); // insert into array 问题是数据types。 如果Excel单元格有时间或date格式, range.Cells.Value2使: 12.06.2012至41072(Excel单元格types – date) 14:48到0,616666666666667(Excel单元格types – 时间) 如果我得到Excel单元格的单值,我得到正确的值(与Cells.Text.ToString() ): ExcelWorksheet.get_Range("A1", "A1").Cells.Text.ToString() 任务:我需要从Excel表格中获取值,就像文本一样,而不是另一种types。 而不想Excel认为,而不是我:)

从Excel应用程序对象中查找位(32位/ 64位)?

是否有可能确定Excel是否从Microsoft.Office.Interop.Excel.ApplicationClass运行在32位或64位? 编辑 该解决scheme适用于Excel 2010和Excel 2007

Interop Excel很慢

我正在编写一个应用程序来打开Excel工作表并阅读它 MyApp = new Excel.Application(); MyBook = MyApp.Workbooks.Open(filename); MySheet = (Excel.Worksheet)MyBook.Sheets[1]; // Explict cast is not required here lastRow = MySheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row; MyApp.Visible = false; 这发生需要大约6-7秒,这与Excel的互操作性是否正常? 还有更快的方法来读取一个Excel比这个? string[] xx = new string[lastRow]; for (int index = 1; index <= lastRow; index++) { int maxCol = endCol – startCol; for (int j = 1; j <= maxCol; […]

Excel Interop – 如何更改命名范围

我有一个模板excel文件,我从SQL Server OLEDB连接器填充数据。 该文件包含一些数据透视表,这些数据透视表是指由数据库填充的数据集。 目前我所做的是使用“Data!$ A:$ K”范围来select表格中的所有行。 这带来了数据透视表中显示空白值的问题。 我想要做的是在数据集上创build一个命名表,并将数据透视表引用到该数据表中(再加上名称表带来的其他优点)。 行的数量自然不会设置,所以我想find一种方法来将命名的范围范围设置为实际值。 我正在使用Excel Interop和C#,我找不到方法来改变范围。 我只有: oRng = oSheet.get_Range("Transactions"); 其中select命名的范围。 但是,我怎样才能改变属于它的细胞呢? 或者,我可以追求更好的解决scheme吗? 编辑 dynamic范围是答案! 我解决了这个感谢@TimWilliams的回复: “在模板中使用dynamic范围: http : //ozgrid.com/Excel/DynamicRanges.htm ” 我觉得dynamic范围更好地描述在这里: http : //www.contextures.com/xlpivot01.html 我遇到了一个小问题,我不能在数据透视表中使用范围,因为它要求至less需要2行来操作 – 模板文件只有列标题。 我添加了一个随机string到第二行的第一个单元格和数据透视表接受。 之后,我不得不使用C#代码删除该行。 谢谢你们的帮助。

使用C#将数组读入Excel列

我试图读入数组中的第一列的值。 什么是最好的方式来做到这一点? 以下是我到目前为止的代码。 基本上我试图得到该列的数据范围,所以我可以拉单元格值到一个系统数组。 Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application(); if (xlsApp == null) { Console.WriteLine("EXCEL could not be started. Check that your office installation and project references are correct."); return null; } //xlsApp.Visible = true; Workbook wb = xlsApp.Workbooks.Open(filename, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true); Sheets sheets = wb.Worksheets; […]

如何遍历Excel工作表只从特定列中提取数据

你如何迭代通过一个Excel工作簿与多个工作表只提取说专栏“C”,“E”和“F”的数据? 这是我到目前为止的代码: public static string ExtractData(string filePath) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workBook = excelApp.Workbooks.Open(filePath); string data = string.Empty; int i = 0; foreach (Excel.Worksheet sheet in workBook.Worksheets) { data += "******* Sheet " + i++.ToString() + " ********\n"; //foreach (Excel.Range row in sheet.UsedRange.Rows) //{ // data += row.Range["C"].Value.ToString(); //} foreach (Excel.Range row […]