Excel与VB.NET(从HRESULTexception:0x8002000B(DISP_E_BADINDEX))

我试图从VB.net创build一个Excel文件,我第一次。 我已经添加了Microsoft.Office.Excel参考,导入Microsoft.Office.Interop

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim xlApp As Excel.Application Dim xlWorkBook As Excel.Workbook Dim xlWorkSheet As Excel.Worksheet Dim misValue As Object = System.Reflection.Missing.Value xlApp = New Excel.ApplicationClass xlWorkBook = xlApp.Workbooks.Add(misValue) xlWorkSheet = CType(xlWorkBook.Sheets("sheet1"), Excel.Worksheet) xlWorkSheet.Cells(1, 1) = "Something here" xlWorkSheet.SaveAs("D:\vbexcel.xlsx") xlWorkBook.Close() xlApp.Quit() releaseObject(xlApp) releaseObject(xlWorkBook) releaseObject(xlWorkSheet) MsgBox("Excel file created , you can find the file c:\") End Sub 

错误generetad是在行中:

  xlWorkSheet = CType(xlWorkBook.Sheets("sheet1"), Excel.Worksheet) Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX)) 

也许你的Excel版本不会说英文。 而“表单”是本地语言中的一个脏字,它有点儿是英文的;)你的名字是暗示英语不是默认的语言。 使用索引而不是名字来避免这样的事故:

  xlWorkSheet = CType(xlWorkBook.Sheets(1), Excel.Worksheet) 

这也可能发生,因为

 Workbook.Worksheets.Count 

小于您使用的工作表数量,具体取决于您的Excel设置。 对于我来说,它从3张开始,但对于一个同事,它从2张开始。

所以你可以打电话

 Workbook.Worksheets.Add() 

达到所需数量的纸张