我在vb.net中开发了一个应用程序,它在报告中创建了一个excel数据透视表
我机器上的excel版本从2003年升级到2010,并且数据透视表功能失败
我查看了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"))
我试着查看引用,并且已经更改了对我的机器上显示的更高版本的引用,但我仍然得到相同的异常
以下是异常的某些部分
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
答案 0 :(得分: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))
它就像魅力一样。
Add call也很出色。