2015-05-21 81 views
0

此代码相当长一段时间到现在正在完善,VB.Net互操作的Excel COM异常

它抛出异常:

System.InvalidCastException:无法投 类型的COM对象“系统.__ ComObject”类型 'Microsoft.Office.Interop.Excel.WorksheetClass'

Dim ds_allJobs As DataSet = DBHandling.searchJob("", "", "all open jobs") 
Dim xlApp = New Microsoft.Office.Interop.Excel.Application 

xlApp.Visible = False 
xlApp.ScreenUpdating = False 

Dim xlWorkbook = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet) 
Dim xlWorksheet = New Microsoft.Office.Interop.Excel.Worksheet 

xlWorksheet = xlWorkbook.ActiveSheet 'IT FAILS HERE 
xlWorksheet.Name = "Open Jobs"  

不限suggestio NS?

+0

问题出现在不同的机器上吗?对于不同版本的Excel,错误是相同的?你是否想要或预期特定版本的Excel? – Paolo

+0

该例外似乎不符合代码。发布的代码很糟糕,您不能使用'New'运算符来创建工作表。使用'As'而不是'New'。 –

+0

问题在于我将设置设置为.Net 3.0 .. thx guys –

回答

0

如果你指定的对象类型(例如exWorkbook As Excel.Workbook

这是一种方法,使一个新的工作表中最好是:

'create a new excel application (window) 
Dim exApp As New Excel.Application 
'add a workbook to it, and take a look at the first worksheet 
Dim exWorkbook As Excel.Workbook = exApp.Application.Workbooks.Add() 
'create a new worksheet 
Dim exWorksheet As Excel.Worksheet 
'add this worksheet to the current applicatoin 
exWorksheet = CType(exApp.Worksheets.Add(), Excel.Worksheet) 

李四这个回答你的问题?最后一行是将对象转换为输入工作表。