Tag: office interop

将数据导出到excel时,应用程序停止

我有一个代码,显示从Access数据库中的表,我的WinForm我有一个选项导出到Excel,一旦用户点击它需要一些时间来复制所有行到Excel,如果用户尝试closuresexcel之前,所有单元格传输到工作表应用程序将停止并引发错误System.Runtime.InteropServices.COMException:'exception从HRESULT:0x800AC472' 这里是我的Windows窗体中的“导出到Excel”button的代码 private void Export_btn_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet = null; app.Visible = true; worksheet = workbook.Sheets["Sheet1"]; worksheet = workbook.ActiveSheet; for (int i = 1; i < fviAoi_tbl.Columns.Count + 1; i++) { worksheet.Cells[1, i] = fviAoi_tbl.Columns[i – 1].HeaderText; } for (int i = 0; […]

在Excel 2010中dynamic更改button图像

我正在使用XML创build一个自定义Excelfunction区,其中包含一个包含图像的button。 我希望能够改变这个图像时,按下button(如切换),以显示它是在什么状态。我有以下的XML来描述button: <button id="MyButton" label="MyLabel" screentip="Some useful info." onAction="MyAction" getImage="GetImage" size="large"/> MyAction方法定义如下: public void MyAction(Office.IRibbonControl control) { // Change button image here… } 有什么办法可以改变MyAction()方法中button的图像? 干杯

excel互操作exception0x8002000B

我有以下代码来打开工作簿,并保留一张表: //Get a new workbook. oWB = app.Workbooks.Add(Missing.Value); int len = oWB.Sheets.Count; for (int i = 1; i < len; i++) { ((Worksheet)oWB.Sheets[i]).Delete(); } oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.ActiveSheet; 这个代码在许多客户端configuration中工作了很多年。 出于某种原因,我有一个客户与Excel 2013(在希伯来语),在他的机器上我得到以下例外: System.Runtime.InteropServices.COMException (0x8002000B): Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX)) at Microsoft.Office.Interop.Excel.Sheets.get__Default(Object Index) at IOSIGHT.Win.ActiveReports.ExcelHelper.StartExcel() 如果我了解情况,似乎由于某种原因,工作簿中没有任何工作表,所以对oWb.ActiveSheet的调用将引发exception。 任何想法是什么造成这个? 是的,我看到了同样的例外其他职位,但我的代码不符合他们的情况。 感谢您的帮助,奥默

分配Excel范围时出现HRESULT错误?

我正在写一个基本的程序来使用C#来操纵Excel,而且我在分配范围时遇到了困难。 这是我的代码: using Excel = Microsoft.Office.Interop.Excel; //…various other using statements static void Main(string[] args) { Excel.Application xlApp = new Excel.Application(); xlApp.Visible = true; Excel.Workbook bk=xlApp.Workbooks.Add(); Excel.Worksheet sht = bk.Sheets["Sheet1"]; Excel.Range rng; for (int c = 0; c < 10;c++ ) { rng=sht.Cells[c,1]; rng.Value= "aaa"; } } 我不断收到以下错误rng=sht.Cells[c,1]; 线: An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred […]

如何将多个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中?

我有一个Excel工作簿,我正在使用循环添加工作表。 在下面的示例代码中,我使用的是固定数组,但真正的代码使用数据库来获取名称,可以有一个或多个(尽pipeless于10个)。 我遇到的问题(用我的代码)是按照与数组相反的顺序添加的工作表。 所以Excel工作表将打开,并按照1103 1102 1101 Sheet1的顺序排列标签。 我知道我可以从数据库重新sorting结果,但感觉像一个黑客攻击,我相信有一种方法可以在代码中实现这一点。 需要做些什么才能正确设置我的循环内的标签顺序? private static void SetWorksheet() { Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlApp.Visible = true; xlWorkBook = xlApp.Workbooks.Add(1); string[] storeArray = { "1101", "1102", "1103" }; foreach (string s in storeArray) { xlWorkBook.Worksheets.Add(); xlWorkBook.Worksheets.Move(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1]; xlWorkSheet.Name […]

我怎样才能以编程方式创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); […]

从asp.net web应用程序访问Interop.office.excel库

我有一个asp.net的Web应用程序,并部署在Web服务器上。 在一个场景中,我有一个固定的格式Excel文件夹中的服务器上的工作表。 在运行时即时通过interop.office.excel库的帮助下写入单元格。 最初在服务器上没有安装excel,那么我们已经安装了excel,并且从组件服务中给了COM组件充分的权利。 但现在我们正在得到错误。 如何解决这个问题? 检测产品“{90110409-6000-11D3-8CFE-0150048383C9}”,function“OfficeUserData”,组件“{4A31E933-6F67-11D2-AAA2-00A0C90F57B0}”失败。 资源“HKEY_CURRENT_USER \ Software \ ODBC \ ODBC.INI \ MS Access数据库”不存在。 检测到产品“{90110409-6000-11D3-8CFE-0150048383C9}”,function“ExcelUserData”,组件“{8ADD2C96-C8B7-11D1-9C67-0000F81F1B38}”失败。 资源“HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 11.0 \ Excel \ UserData”不存在。

Excel Interop未能写入(HRESULT:0x800A03EC)

当我试图在Excel Interop中执行这个命令时,我得到了一个exception0x800A03EC ws.get_Range("A2").Value= "=?9ABC" 似乎interop不喜欢以“=?”开头的string。 我试图通过将计算模式设置为手动来解决问题,但不幸的是,这不是解决scheme。 谁能告诉我该怎么办? 谢谢锦先生

当您使用“格式化单元格”选项更改单元格的格式时,则不激活Excel事件

有人可以告诉我这一点 如果我已经在Excel中select了一个单元格 右键点击它 转到格式单元格选项 更改格式 那么哪个事件会被解雇? 请注意,通过这个操作,我不会离开原单元格。