需要安装Microsoft.Office.Interop.Excel
前期网上寻找并修改为可用的方法
VB代码实现导出为Excel
Private Function ToExcel(excelTalbe As DataTable, filePath As String, fileName As String) As Boolean
Dim app As New Microsoft.Office.Interop.Excel.Application()
Try
app.Visible = False
Dim wBook As Microsoft.Office.Interop.Excel.Workbook = app.Workbooks.Add(True)
Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet = wBook.Sheets(1)
wSheet.Name = fileName
Dim objData(excelTalbe.Rows.Count + 1, excelTalbe.Columns.Count) As Object
'首先将数据写入到二维数组中
For i As Integer = 0 To excelTalbe.Columns.Count - 1
objData(0, i) = excelTalbe.Columns(i).ColumnName
Next
If (excelTalbe.Rows.Count > 0) Then
For i As Integer = 0 To excelTalbe.Rows.Count - 1
For j As Integer = 0 To excelTalbe.Columns.Count - 1
objData(i + 1, j) = excelTalbe(i)(j)
Next
Next
End If
Dim startCol As String = "A" '计算要替换的区域
Dim iCnt As Integer = ((excelTalbe.Columns.Count - 1) \ 26)
Dim endColSignal As String = IIf(iCnt = 0, "", Chr(Asc("A") + iCnt - 1).ToString())
Dim endCol As String = endColSignal + Chr((Asc("A") + excelTalbe.Columns.Count - iCnt * 26 - 1)).ToString
Dim range As Microsoft.Office.Interop.Excel.Range = wSheet.Range(startCol + "1", endCol + (excelTalbe.Rows.Count + 1).ToString)
range.Value = objData
range.EntireColumn.AutoFit()
wSheet.Range(startCol + "1", endCol + "1").Font.Bold = 1
'禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = False
app.AlertBeforeOverwriting = False
'保存工作薄
wSheet.SaveAs(filePath)
wBook.Close()
app.Quit()
GC.Collect()
Return True
Catch ex As Exception
MessageBox.Show("导出Excel出错!错误原因:" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information)
'强制结束进程
Dim t As IntPtr = New IntPtr(app.Hwnd)
Dim k As Integer = 0
GetWindowThreadProcessId(t, k)
Dim p As System.Diagnostics.Process = System.Diagnostics.Process.GetProcessById(k)
p.Kill()
Return False
End Try
End Function