2012-09-19 57 views
0

我已经开发了在vb.net这异常创建数据透视表,由于Excel版本升级

我的机器上的Excel版本得到了从2003年和枢轴升级至2010年的报告创建一个Excel数据透视表中的应用表功能未能

我看着了2003年和2010年版本的来电,并没有发现除2003年外的任何差别有WkbResult.PivotCaches.Add和2012年有WkbResult.PivotCaches.Create

Dim WksPivot As Excel.Worksheet = WkbResult.Worksheets("Summary") 
Dim WksResult As Excel.Worksheet = WkbResult.Worksheets("Test_Details") 
Dim PC As Excel.PivotCache = Nothing 
Dim PTS As Excel.PivotTables = Nothing 
Dim PT As Excel.PivotTable = Nothing 

' This is where it fails even after i changed Add to Create method 

PC = WkbResult.PivotCaches.Create(Excel.XlPivotTableSourceType.xlDatabase, WksResult.Range("A:D")) 

我想看看refe分配办法,并有改变了参考到更高版本,显示我的计算机上,但我仍然得到同样的异常

这里是异常的某些部分

System.ArgumentException was unhandled 
    Message="The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))" 
    Source="" 
    StackTrace: 
     at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) 
     at Microsoft.Office.Interop.Excel.PivotCaches.Create(XlPivotTableSourceType SourceType, Object SourceData, Object Version) 
     at QCLite.PivotTableManager.CreateResultsPivotTable(Workbook& WkbResult, ListView lstResults) in C:\userdata\Framework\src\06 Utilities\QCLite\QCLite\PivotTableManager.vb:line 23 

回答

1

这似乎是为Excel 2010中的范围指定为(“A:d”)不工作

我改变调用

Dim TotalRows As Integer = WksResult.UsedRange.Rows.Count 

PC = WkbResult.PivotCaches.Add(Excel.XlPivotTableSourceType.xlDatabase, WksResult.Range("A1:D" & TotalRows)) 

和它的工作般的魅力。

添加电话也工作得很好,令人惊讶。