问个VB.NET2005的简单问题

yao110119 2007-01-06 08:19:21
我想用EXCEL 2003 对DATAGRIDVIEW1进行数据导出,写了以下代码:
Public Sub ExportToExcel()
If DataGridView1.RowCount > 0 Then
Try
Dim ds As New DataSet
ds = DataGridView1.DataSource
Dim i, j As Integer
Dim rows As Integer = ds.Tables(0).Rows.Count
Dim cols As Integer = ds.Tables(0).Columns.Count
Dim DataArray(rows - 1, cols - 1) As String
For i = 0 To rows - 1
For j = 0 To cols - 1
If ds.Tables(0).Rows(i).Item(j) Is System.DBNull.Value Then
Else
DataArray(i, j) = ds.Tables(0).Rows(i).Item(j)
End If
Next
Next
Dim myExcel As Excel.Application = New Excel.Application
myExcel.Application.Workbooks.Add(True)
myExcel.Visible = True
For j = 0 To cols - 1
myExcel.Cells(1, j + 1) = ds.Tables(0).Columns(j).ColumnName
Next
myExcel.Range("A2").Resize(rows, cols).Value = DataArray
Catch exp As Exception
MessageBox.Show("数据导出失败!请查看是否已经安装了Excel", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning)
End Try
Else
MessageBox.Show("没有数据!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

但是Dim myExcel As Excel.Application = New Excel.Application这一句会出现错误,错误提示是:未定义类型EXCEL.application.改怎样改呢?
...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pxjhy 2007-01-08
  • 打赏
  • 举报
回复
我曾经遇到过类似问题。。

是没有在开发环境中添加引用后就可以了。。。。。
vb_chenyh 2007-01-08
  • 打赏
  • 举报
回复
以下是我从DataTable到Excel的程序段,看看有什么帮助
Public Sub DStoXls(ByVal Table As DataTable, ByVal DefFileName As String)

Dim MyOleDbCn As New System.Data.OleDb.OleDbConnection
Dim MyOleDbCmd As New System.Data.OleDb.OleDbCommand
Dim MyTable As New DataTable
Dim intRowsCnt, intColsCnt As Integer
Dim strSql As String, strFlName As String
Dim Fso As New System.Object
If Table Is Nothing Then
MessageBox.Show("未取得數據,無法導出", "導出錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
MyTable = Table
If MyTable.Rows.Count = 0 Then
MessageBox.Show("未取得數據,無法導出", "導出錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
Dim FileName As String
Dim SaveFileDialog As New SaveFileDialog
SaveFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
SaveFileDialog.Title = "保存為"
SaveFileDialog.Filter = ".xls|*.xls"
SaveFileDialog.FileName = DefFileName
If (SaveFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then
FileName = SaveFileDialog.FileName
' TODO: 在此加入開啟檔案的程式碼。
End If
If FileName = "" Then Exit Sub
strFlName = FileName
If Dir(FileName) <> "" Then
Kill(FileName)
End If
Try
Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

MyOleDbCn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" & _
"Data Source=" & strFlName & ";" & _
"Extended ProPerties=""Excel 8.0;HDR=Yes;"""
MyOleDbCn.Open()
MyOleDbCmd.Connection = MyOleDbCn
MyOleDbCmd.CommandType = CommandType.Text

'第一行插入列标题
strSql = "CREATE TABLE " & DefFileName & "("
For intColsCnt = 0 To MyTable.Columns.Count - 1
If intColsCnt <> MyTable.Columns.Count - 1 Then
strSql = strSql & ChangeChar(MyTable.Columns(intColsCnt).Caption) & " text,"
Else
strSql = strSql & ChangeChar(MyTable.Columns(intColsCnt).Caption) & " text)"
End If
Next
MyOleDbCmd.CommandText = Replace(strSql, ".", "_") '創建表的時候,不允許有“.”的字段名,所以要用“ˍ”來替換
MyOleDbCmd.ExecuteNonQuery()

'插入各行
For intRowsCnt = 0 To MyTable.Rows.Count - 1
strSql = "INSERT INTO " & DefFileName & " VALUES('"
For intColsCnt = 0 To MyTable.Columns.Count - 1
If intColsCnt <> MyTable.Columns.Count - 1 Then
strSql = strSql & ChangeChar(MyTable.Rows(intRowsCnt).Item(intColsCnt)) & "','"
Else
strSql = strSql & ChangeChar(MyTable.Rows(intRowsCnt).Item(intColsCnt)) & "')"
End If
Next
MyOleDbCmd.CommandText = strSql
MyOleDbCmd.ExecuteNonQuery()
Next
MessageBox.Show("数据已经成功导入EXCEL文件" & strFlName, "数据导出", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ErrCode As Exception
MsgBox("错误信息:" & ErrCode.Message & vbCrLf & vbCrLf & _
"引发事件:" & ErrCode.TargetSite.ToString, MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "错误来源:" & ErrCode.Source)
Exit Sub
'Finally
MyOleDbCmd.Dispose()
MyOleDbCn.Close()
MyOleDbCn.Dispose()
End Try

End Sub
nices0028 2007-01-08
  • 打赏
  • 举报
回复
这个问题我也碰到过
把Dim myExcel As Excel.Application = New Excel.Application改成
Dim myExcel As Interop.Excel.Application = New Interop.Excel.ApplicationClass
就可以了
yao110119 2007-01-06
  • 打赏
  • 举报
回复
主要是我用VS.NET2003开发时,这段代码是正确的,而今天用VS.NET 2005开发时,就提示错误了
RickTroy 2007-01-06
  • 打赏
  • 举报
回复
Excel.Appplication是抽象类
要用获得的方法 不能使用构造方法
请再详细参考一下Office开发手册
zheninchangjiang 2007-01-06
  • 打赏
  • 举报
回复
没有引用excel
yao110119 2007-01-06
  • 打赏
  • 举报
回复
怎么没有人回答呢?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧