C# C“Excel COM互操作引发异常”;HRESULT的例外情况:0x800A03EC“;
范围: 我正在使用Excel和COM互操作实现自动报告生成。由于有一些任务EPPlus无法完成,我发现自己不得不使用Excel COM来覆盖EPPlus中所有缺失的功能 基本上,我的工作方式是: 1-在我的数据库上执行查询 2-将结果转储到“基本工作表”(带标题) 3-使用“基本工作表”创建数据透视表。这总是有效的,因为我已经使用这个策略很长一段时间了 互操作用法: 除了预先选择透视表过滤器外,整个流程可以通过仅使用EPPlus来实现(这不会给我带来任何问题)。(如下图所示,对于该过滤器,我只需要匹配“PG”的元素,而不是显示“All”元素) 问题: 调用有关透视表(内置于Excel互操作中)的方法时,引发名为“HRESULT:0x800A03EC的异常”的错误 一些代码示例: --样本#1 --样本#2 --样本#3 这是引发我错误的一行:C# C“Excel COM互操作引发异常”;HRESULT的例外情况:0x800A03EC“;,c#,excel,office-interop,C#,Excel,Office Interop,范围: 我正在使用Excel和COM互操作实现自动报告生成。由于有一些任务EPPlus无法完成,我发现自己不得不使用Excel COM来覆盖EPPlus中所有缺失的功能 基本上,我的工作方式是: 1-在我的数据库上执行查询 2-将结果转储到“基本工作表”(带标题) 3-使用“基本工作表”创建数据透视表。这总是有效的,因为我已经使用这个策略很长一段时间了 互操作用法: 除了预先选择透视表过滤器外,整个流程可以通过仅使用EPPlus来实现(这不会给我带来任何问题)。(如下图所示,对于该过滤器,我只需
// Retrieving Filter instance
PivotField pivotField = (PivotField) pivotTable.PageFields ("TIPO_MOVIMENTO");
结束:
在网络上做了一些广泛的研究之后,通过错误消息,我通常发现这是由使用基于零的范围造成的,而不是在创建“范围”实例时以“1”开头,但这不是我的情况,所以我真的不知道如何在这里继续
更新一个:
我的互操作包装类的代码+用法:
我不能在这里发布示例报告(.xlsx文件),因为它包含敏感数据
我正在使用:
Microsoft.Office.Core版本2.5.0.0
Microsoft.Office.Interop.Excel版本14.0.0.0
Visual Studio 2012和2013 Ultimate是否可以尝试使用类似的内容更改.Open方法调用,并查看它是否可能是一个
转换
问题var\u workbook=excelApp.Workbooks.Open(filePath,0,true,5,emptStr,emptStr,true,XlPlatform.xlWindows,“\t”,false,false,0,true,1,0)代码>EmpStr=String.Empty?我现在正在尝试,很快会让你知道。这是一个糟糕的内部Excel错误。当你查询“excel错误1004”时,你会在谷歌上得到一百万次点击,最好从顶部开始。@DJKRAZE现在我也遇到了同样的错误,但正好在.Open行。有什么想法吗?取决于您如何声明文件路径
// Disposing Object
public void Dispose ()
{
_workbook.Save ();
_workbook.Close ();
_excelApp.Quit ();
Marshal.ReleaseComObject (_workbook);
}
// Iterating over worksheet and their pivot tables
foreach (Worksheet sheet in _workbook.Sheets)
{
switch (sheet.Name)
{
case "ACTDIAXDIA":
foreach (PivotTable pivotTable in sheet.PivotTables ())
{
pivotTable.PivotCache().MissingItemsLimit = XlPivotTableMissingItems.xlMissingItemsNone;
pivotTable.PivotCache().Refresh();
// Settting Pivot Table Outline Layout
pivotTable.RowAxisLayout (XlLayoutRowType.xlOutlineRow);
// Retrieving Filter instance
PivotField pivotField = (PivotField) pivotTable.PageFields ("TIPO_MOVIMENTO");
ToggleFieldVisibility (pivotField, "PG", true);
ToggleFieldVisibility (pivotField, "AC", false);
ToggleFieldVisibility (pivotField, "AJ", false);
ToggleFieldVisibility (pivotField, "RX", false);
pivotField = (PivotField)pivotTable.PageFields ("TIPO_COBRANCA");
ToggleFieldVisibility (pivotField, "ACT", true);
ToggleFieldVisibility (pivotField, "TC", false);
ToggleFieldVisibility (pivotField, "DEMAIS", false);
}
break; // Code goes on, but its not needed for this demonstration
// Retrieving Filter instance
PivotField pivotField = (PivotField) pivotTable.PageFields ("TIPO_MOVIMENTO");