' 过程名称:ExportToExcel ' 功能描述:将传入的表格导出为Excel表 ' 接收参数:p_InfoTable 要导出的表格 ' 返回参数: ' 创建人员及日期:zzz@2006-11-02 ' 注意事项:使用此函数需要引用Microsoft Excel 11.0 Object Library ' 并且附加上frmWaiting窗体 Public Sub ExportToExcel() Sub ExportToExcel(ByVal p_InfoTable As Data.DataTable) If p_InfoTable.Rows.Count > 0 Then Dim NewfrmWaiting As New frmWaiting NewfrmWaiting.Show() System.Windows.Forms.Application.DoEvents() Dim myExcel As Microsoft.Office.Interop.Excel.Application Try Dim datav As New DataView datav = p_InfoTable.DefaultView Dim i, j As Integer Dim rows As Integer = datav.Table.Rows.Count Dim cols As Integer = datav.Table.Columns.Count Dim DataArray(rows - 1, cols - 1) As String myExcel = New Microsoft.Office.Interop.Excel.Application For i = 0 To rows - 1 For j = 0 To cols - 1 If datav.Table.Rows(i).Item(j) Is System.DBNull.Value Then Else '如果是数字类型的就保留两位小数点 If datav.Table.Rows(i).Item(j).GetType.ToString.ToLower = "system.int16" Or _ datav.Table.Rows(i).Item(j).GetType.ToString.ToLower = "system.int32" Or _ datav.Table.Rows(i).Item(j).GetType.ToString.ToLower = "system.single" Or _ datav.Table.Rows(i).Item(j).GetType.ToString.ToLower = "system.double" Then DataArray(i, j) = Format(datav.Table.Rows(i).Item(j), "#########.00").Trim Else DataArray(i, j) = Convert.ToString(datav.Table.Rows(i).Item(j)).Trim End If 'DataArray(i, j) = datav.Table.Rows(i).Item(j) End If Next Next myExcel.Application.Workbooks.Add(True) myExcel.Visible = True For j = 0 To cols - 1 myExcel.Cells(1, j + 1) = datav.Table.Columns(j).ColumnName Next myExcel.Range("A2").Resize(rows, cols).Value = DataArray Catch exp As Exception MsgBox("数据导出失败!请查看是否已经安装了Excel", MsgBoxStyle.Critical, "数据异常") Finally NewfrmWaiting.Close() End Try Else MsgBox("未发现当月数据!", MsgBoxStyle.Exclamation, "数据异常") End If End Sub