VB机房收费系统时我们也用到导出Excel,都是从相同的容器中导出,形式和内容上两者大致相同。
一、VB版导出Excel
Dim i As Integer
Dim j As Integer
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
For i = 0 To Flex.Rows - 1
For j = 0 To Flex.Cols - 1
Flex.Row = i
Flex.col = j
xlSheet.Cells(i + 1, j + 1) = Trim(Flex.Text)
Next
Next
xlApp.Visible = True
End Sub
二、VB.NET版导出Excel
1、datagridview中导出Excel
第一步:添加引用
项目-->添加引用--> .NET-->Microsoft.Office.Interop.Excel
第二步:编写代码
<span style="font-size:18px;"> '添加工作簿
Dim MyExcel As New Microsoft.Office.Interop.Excel.Application()
'添加表
MyExcel.Application.Workbooks.Add()
'打开表
MyExcel.Visible = True
'获取datagridview的标题行赋给Excel,Excel标题行第一列标识为1,datagridview则为0,所以为Cols-1
Dim Cols As Integer
For Cols = 1 To dgvLineRecord.Columns.Count
MyExcel.Cells(1, Cols) = dgvLineRecord.Columns(Cols - 1).HeaderText
Next
'往excel表里添加数据()
Dim i As Integer
'datagridview的行与列计算时均为0至*.* - 1
For i = 0 To dgvLineRecord.RowCount - 1
Dim j As Integer
For j = 0 To dgvLineRecord.ColumnCount - 1
If Me.dgvLineRecord(j, i).Value Is System.DBNull.Value Then
'Excel的第一行是标题,所以应从第二行开始,即:i+2 注意DataGridView的坐标是先列后行
MyExcel.Cells(i + 2, j + 1) = ""
Else
MyExcel.Cells(i + 2, j + 1) = dgvLineRecord(j, i).Value.ToString
End If
Next j
Next i</span>
注:DBNull 类表示一个不存在的值。例如,在数据库的表中,某一行的某列中可能不包含任何数据。即,该列被视为根本不存在,而不只是没有值。一个表示不存在的列的 DBNull 对象。
2、直接从datatable中导出Excel
博客借鉴:
亚红师姐:http://blog.csdn.net/jyhye/article/details/7244334
注:(1)datagridview与datatable在形式上较为相近,行与列均是从0开始计算
(2)datagridview坐标是先列后行