VB.NET之旅-机房收费系统个人重构DatagridView导出数据到Excel

前端之家收集整理的这篇文章主要介绍了VB.NET之旅-机房收费系统个人重构DatagridView导出数据到Excel前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

记得vb版的机房收费系统的导出Excel是从网上直接搬的代码,这次又遇到了从dataGridView导出Excel的问题,我在心里暗暗想,这次的代码一定要自己写,这一写可就出问题了,请见下文

第一步,添加引用在U

第二步,引入命名空间

第三步,书写代码

遇到问题一.

答案:从网上找了很多资料,原来答案在这里,excel的表格索引值行和列都是从1开始的,而我这里却是从0开始的

遇到问题二,


没有表头,而且我在DataGridView中的卡号明明是00001到了excel中怎么变成了1,我想大家都知道这是Excel中的单元格格式的问题,只要把单元格的格式改成文本类型,然后在进行输入就可以了。

代码

解决一下表头问题:

再看一下具体的代码

  1. <strong> Public Sub ExportExcel(ByRef frmName As Form,ByRef flexgrid As DataGridView)
  2. Dim xlApp As New Excel.Application
  3. Dim xlBook As Excel.Workbook
  4. Dim xlSheet As Excel.Worksheet
  5.  
  6. Dim answer As Int16
  7. xlBook = xlApp.Workbooks.Add(True)
  8. xlSheet = xlBook.Worksheets.Add()
  9.  
  10. If flexgrid.Rows.Count = 0 Then
  11. answer = MessageBox.Show("当前记录为空,仍需导出吗?",frmName.Text,MessageBoxButtons.YesNo,MessageBoxIcon.Question)
  12.  
  13. If answer = DialogResult.No Then
  14. Exit Sub
  15. End If
  16. End If
  17.  
  18.  
  19. With flexgrid
  20. Dim drow As Int16
  21. Dim dcol As Int16
  22.  
  23. drow = flexgrid.Rows.Count '行
  24. dcol = flexgrid.Columns.Count '列
  25.  
  26. xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(drow + 1,dcol)).Select() '选中所需单元格
  27. xlApp.Selection.NumberFormatLocal = "@" '将单元格的格式定义为文本
  28.  
  29. 'excel.cell(行的索引,列的索引)两个索引都是从1开始的
  30. 'DataGridView(列的索引,行的索引)两个索引都是从0开始的
  31.  
  32. For i = 0 To dcol - 1
  33. xlSheet.Cells(1,i + 1) = flexgrid.Columns(i).HeaderText
  34. Next
  35.  
  36.  
  37. For i = 0 To drow - 1 'i为0到总行数-1的循环
  38. For j = 0 To dcol - 1 'j为0到总列数-1的循环
  39.  
  40. xlSheet.Cells(i + 2,j + 1) = flexgrid.Item(j,i).Value.ToString
  41.  
  42. Next
  43. Next
  44. End With
  45. xlApp.Visible = True
  46.  
  47.  
  48. End Sub</strong>
希望同样遇到这些问题的同学,能从这里找到些答案,能给大家一点帮助!

猜你在找的VB相关文章