DataGridView需要导出到一个excel文件
我的程序包含一个datagridview,用户在运行时手动填充数据。 当用户点击保存时,我希望将datagridview导出到以后可以访问的excel文件。
我现在的代码出现了一个错误types“空引用exception”
Dim xlApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application() If xlApp Is Nothing Then MessageBox.Show("Excel is not properly installed!!") Return End If Dim xlWorkBook As Excel.Workbook Dim xlWorkSheet As Excel.Worksheet Dim misValue As Object = System.Reflection.Missing.Value Dim i As Integer Dim j As Integer xlWorkBook = xlApp.Workbooks.Add(misValue) xlWorkSheet = xlWorkBook.Sheets("sheet1") 'xlWorkSheet.Cells(1, 1) = "Sheet 1 content" 'xlWorkSheet.Cells(3, 3) = "Sheet 1 content" If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then Exit Sub End If For k As Integer = 0 To DataGridView1.Columns.Count - 1 xlWorkSheet.Cells(1, k + 1) = DataGridView1.Columns(k).HeaderText Next For i = 0 To DataGridView1.RowCount - 1 For j = 0 To DataGridView1.ColumnCount - 1 xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString() Next Next xlWorkBook.SaveAs("C:\test\DATAGRID.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue) xlWorkBook.Close(True, misValue, misValue) xlApp.Quit() releaseObject(xlWorkSheet) releaseObject(xlWorkBook) releaseObject(xlApp) MessageBox.Show("Excel file created , you can find the file C:\test\DATAGRID.xls")
谢谢你们的帮助
我发现这个代码实际上是我想要的
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim rowsTotal, colsTotal As Short Dim I, j, iC As Short System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor Dim xlApp As New Excel.Application Dim misValue As Object = System.Reflection.Missing.Value Try Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet) rowsTotal = DataGridView1.RowCount - 1 colsTotal = DataGridView1.Columns.Count - 1 With excelWorksheet .Cells.Select() .Cells.Delete() For iC = 0 To colsTotal .Cells(1, iC + 1).Value = DataGridView1.Columns(iC).HeaderText Next For I = 0 To rowsTotal - 1 For j = 0 To colsTotal - 1 .Cells(I + 2, j + 1).value = DataGridView1.Rows(I).Cells(j).Value Next j Next I .Rows("1:1").Font.FontStyle = "Bold" .Rows("1:1").Font.Size = 10 .Cells.Columns.AutoFit() .Cells.Select() .Cells.EntireColumn.AutoFit() .Cells(1, 1).Select() End With excelBook.SaveAs("C:\test\DATAGRID.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue) MessageBox.Show("Excel file created , you can find the file C:\test\DATAGRID.xls") Catch ex As Exception MsgBox("Export Excel Error " & ex.Message) Finally 'RELEASE ALLOACTED RESOURCES System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default xlApp = Nothing End Try End Sub
当您访问DataGridView的单元格时,它的function与Excel互操作对象的function不同。 而不是使用:
DataGridView1(j, i).Value.ToString()
你应该使用:
DataGridView1.Rows(i).Cells(j).Value.ToString()
Excel interop对象只是使用列和行作为索引,但DataGridView(以及大多数其他.NET数据对象)将它们存储为嵌套集合。
- 没有使用硬代码的Excel到DataGridView
- 导入Excel工作表到datagridview – 工作簿需要closures才能使用OleDB?
- 将数据从excel导入到具有特定条件的DataGridview中
- 将datagridview内容导出为excel
- 在VB.NET中格式化Excel
- 如何在excel中input数字前面的零?
- 使用EPPlus C#无法将数据从Datagridview插入Excel
- 如何使用数据网格视图在我的Windows应用程序中显示.xlsx exstension的excel数据?
- 如何解决无法投射“System.Data.DataView”types的对象来键入“System.Data.DataTable”错误