Tag: excel interop

尝试隐藏最后一列失败,并出现错误“无法将对象从工作表移出”

所以出于某种目的,我需要在excel的最后一列插入注释。 由于我不希望用户能够看到我插入的评论,我尝试隐藏列。 不知何故,它给了我一个错误“不能移动对象的工作表” Constants.cs HIDDEN_DATA_COL = 16384; // Which is last column in excel 2007 MyUtil.cs Excel.Range range = ws.get_Range(ws.Cells[1, Constants.HIDDEN_DATA_COL], ws.Cells[1, Constants.HIDDEN_DATA_COL]); range.AddComment(result); range.Comment.Shape.Width = 50; range.Comment.Shape.Height = 50; range.EntireColumn.Hidden = true; 我也做了一些尝试: 删除range.EntireColumn.Hidden和代码是确定的。 将HIDDEN_DATA_COL更改为小于10的数字,也会使运行时错误消失。 任何想法如何解决它?

使用NetOffice Interop创buildExcel文档时出错

当我尝试使用我的c#应用程序创buildExcel文档时,出现以下未处理的exception。 当我从Visual Studio 10运行C#应用程序时,这个过程工作正常,但是当我尝试使用.exe文件在Visual Studio之外运行应用程序时,出现此错误。 System.IO.FileNotFoundException: Could not load file or assembly 'ExcelApi, Version=1.5.1.2, Culture=neutral, PublicKeyToken=9084b9221296229e' or one of its dependencies. The system cannot find the file specified. File name: 'ExcelApi, Version=1.5.1.2, Culture=neutral, PublicKeyToken=9084b9221296229e'

用IF公式编程方式填充Excel单元不起作用

我正在尝试通过COM Interop编程方式填充Excel 2010单元格,并使用表示IF公式的string。 下面的代码行工作得很好,它在Excel中parsing为值4: .Range("C10").Value = "=2+2" 但是当我通过一个IF-Formula(as String)… .Range("C11").Value = "=IF(1+1=2;2;0)" …我碰到一个COMException ,说: Exception from HRESULT: 0x800A03EC 。 如果我直接在Excel中input相同的IF-公式,它将被正确parsing。 谢谢你的帮助! 克里斯

无法将System.DBNull转换为int

我正在努力解决这个问题,我有一个Excel电子表格必须导入到我的SQL Server数据库。 我遍历它如下: Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.Range["A1", "D6867"]; int num = 4; // String test = ""; foreach (Microsoft.Office.Interop.Excel.Range row in xlRange.Rows) { if ((int)xlWorksheet.Cells[num, 1].Font.Size == 14) { ProductCategory category = new ProductCategory(); category.Category = xlWorksheet.Cells[num, 1].Value.ToString(); db.ProductCategories.Add(category); } num++; //System.Diagnostics.Debug.WriteLine(test); } db.SaveChanges(); xlWorkbook.Close(true, Missing.Value, Missing.Value); xlApp.Quit(); 我得到的错误是 无法将System.DBNull转换为int 在这一行: if ((int)xlWorksheet.Cells[num, 1].Font.Size == […]

如何将多个Excel文件合并到一个Excel文件中

所以我试图做一个Excel表格聚合器。 在我的工作中,我们得到了一些给我们发送了一堆单独的excel文件的人,这些文件都只有一张使用过, 我曾经在一定程度上关注了这个以前的post的想法 。 但是在这样做的时候,我抄的一些excel表都是空白的。 只有某些人。 我不知道为什么有些是空白的,其他的都不错。 这里是我用来打开和复制excel文件的代码 OpenFileDialog browse = new OpenFileDialog(); browse.Multiselect = true; DialogResult result = browse.ShowDialog(); if (result == DialogResult.OK) try //try to open it. If its a proper excel file { excel = new Excel.Application(); excel.Workbooks.Add(""); finalized = excel.Workbooks[1]; excel.SheetsInNewWorkbook = 1; for(int i=0; i< browse.FileNames.Length; i++) { excel.Workbooks.Add(browse.FileNames[i]); } […]

Excel如何适应单元格中的文本,基于单元格witdh

我想在我的ExcelSheet中设置一个单元格的witdh。 设置witdh: worksheet.Columns["K"].ColumnWidth = 114.80; 当文字较大时,ColumnWith文字不可见。 我想根据ColumnWith将文本拆分到同一个单元格中的新行。 我试图将\ r \ n添加到Excel中的string,但没有结果。 编辑后的答案 这完美地工作: worksheet.Columns["K"].ColumnWidth = 114; Excel.Range rangeK = worksheet.get_Range("K1"); rangeK.EntireColumn.WrapText = true;

我怎样才能以编程方式创build一个Excel“sorting/filtercombobox”?

我正在为手动创build的dynamic创build电子表格进行反向工程。 大多数单元格都是用简单的数据填充的,但有一些是“sort / Filter”下拉菜单,如下所示: 我怎样才能dynamic地创build这样的控制? 有没有办法在Excel电子表格中“查看源代码”来查看生成这些控件可能需要什么types的代码? UPDATE 调整MacroMark的代码,编译: var rangeMonthYears = _xlSheet.Range[_xlSheet.Cells[7, 3], _xlSheet.Cells[7, 15]]; object sortFilterCombobox = (object)rangeMonthYears.AutoFilter(1, System.Reflection.Missing.Value, XlAutoFilterOperator.xlAnd, System.Reflection.Missing.Value, true); _xlSheet.Cells["6", "C"] = sortFilterCombobox; //MonthLabel; …但它崩溃,给我提出这个刁钻的注意: 我怎么走错了? 更新2 要在下面的评论中回答MacroMarc,下面是遗留/模型电子表格(我是逆向工程)中的filter控件的屏幕截图: 在这种情况下,我从列表中取消了“十一月”,所以它被删除,你可以看到。 所以用户select什么影响下面的列的可见性。 更新3 随着所有这些花哨的东西被烘焙到传统的电子表格中,我正在考虑将它保存为模板,并根据需要简单地replace单元格内容。 这有什么理由不可行吗? 如果没有,为了做到这一点,我应该保存现有的扩展“作为Excelmacros的工作簿”? 更新4 我试图调整MacroMarc的答案,如下所示: Range monthYearCells = _xlSheet.Range[_xlSheet.Cells[COLUMN_HEADING_ROW, MONTH1_COL], _xlSheet.Cells[COLUMN_HEADING_ROW, MONTH13_COL]]; object monthFilter = (object)monthYearCells.AutoFilter(1, System.Reflection.Missing.Value, XlAutoFilterOperator.xlAnd, System.Reflection.Missing.Value, true); […]

如何将数据转储到excel文件超出其限制?

我有超过2百万的数据 ,我想转储这个数据在Excel文件中,但在本规范中给出的Excel文件只能包含1,048,576行 。 考虑到我有4千万数据库中的数据 , i want to dump this data in excel file. 我做了1个testing,但得到了相同的结果,成功得到1,048,576行 ,之后得到错误: exception从HRESULT:0x800A03EC错误 for (int i = 1; i <= 1200000; i++) { oSheet.Cells[i, 1] = i; } 我想CSV文件,但我不能使用它,因为我们不能给CSV文件的颜色和样式按照这个答案 ,我的Excel文件将包含许多颜色和风格。 所以任何第三方工具或任何通过我可以转储超过200万行Excel文件? 我不关心这是付费还是免费。 任何人都可以帮助我吗?

Excel Interop – 保存前设置文件名

文件保存前可以设置excel文件名吗? 我有以下简单的代码: using Excel = Microsoft.Office.Interop.Excel; Excel.Application excel = new Excel.Application(); excel.Visible = true; Excel.Workbook workbook = excel.Workbooks.Add(Excel.XlSheetType.xlWorksheet); Excel.Worksheet sheet = workbook.Sheets[1]; sheet.Cells[1, 1] = "Hello World!"; 可以在保存前预定义这个名字吗? 谢谢。

Excel Interop SaveAs()挂起了巨大的电子表格数据

我尝试使用SaveAs()保存Excel电子表格数据(包含8个工作表,15000个工作表),但SaveAS()从不返回。 如果我删除一些表格,它将成功保存到硬盘文件。 有什么办法可以保存整个庞大的电子表格而不用挂? 非常感谢。 ///////// my c# code to save Excel data: xlWorkBook.SaveAs(outFileName, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, false, false, Excel.XlSaveAsAccessMode.xlExclusive, false, false, Type.Missing, Type.Missing, Type.Missing); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit();