VB代码实现导出为Excel

需要安装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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值