把DataGridView中的信息导出到Excel是《机房收费系统》的功能之一,这里主要是VS与Office的交互,方法有n多种(从这里就可以看出这个功能难不到哪里去了),现在就介绍一下我使用的一种吧,首先需要添加并引用命名空间。
1.添加:右击窗体所在的项目名即U层的项目名——添加——引用——出现下面图片,搜索Excel,在结果中选中符合版本的Microsoft.Interop.Excel
2.引用命名空间:Imports Microsoft.Office.Interop
由于多次用到了导出Excel的功能,所以把它单独封装到了一个函数ExportToExcel中并放在模块里
Public Function ExportToExcel(ByVal dtg As DataGridView) As Boolean
'DataGridView中没有信息,退出该过程
If dtg.Rows.Count = 0 Then
MsgBox("没有信息可导出!")
Return False
Exit Function
End If
'定义一个Excel程序、工作簿、工作表
Dim xlApp As New Excel.Application()
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Add()
Dim xlSheet As Excel.Worksheet = xlBook.Worksheets(1)
'定义Excel表格的行列索引
Dim rowIndex As Integer = 1
Dim colIndex As Integer = 0
'给Excel添加表头
For col As Integer = 0 To dtg.Columns.Count - 1
colIndex = colIndex + 1
xlSheet.Cells(1, colIndex) = dtg.Columns(col).HeaderText
Next
'将DataGridView中的信息添加到Excel中
For row As Integer = 0 To dtg.RowCount - 1
rowIndex = rowIndex + 1
colIndex = 0
For col As Integer = 0 To dtg.Columns.Count - 1
colIndex = colIndex + 1
xlSheet.Cells(rowIndex, colIndex) = dtg(col, row).Value.ToString()
Next
Next
xlApp.Visible = True '显示Excel表
Return True
End Function
窗体调用代码
Private Sub btnExcel_Click(sender As Object, e As EventArgs) Handles btnExcel.Click
Call GlobalData.ExportToExcel(dtgChargeCash)
End Sub
以上就是U层的代码,B、D两层的与其它窗体的类似。这里需要提示一点的是
dtg(col,row)先列后行,行列从0开始,表头不计在行数内。
Excel(row,col)先行后列,行列从1开始,表头记在行数内。