Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将Datatable导出到Excel会从HRESULT:0x800A03EC部分导出异常_Vb.net_Os.execl - Fatal编程技术网

Vb.net 将Datatable导出到Excel会从HRESULT:0x800A03EC部分导出异常

Vb.net 将Datatable导出到Excel会从HRESULT:0x800A03EC部分导出异常,vb.net,os.execl,Vb.net,Os.execl,我正在尝试将数据表导出到Excel2007。当我到达Excel.Range行时,我部分导出了我创建的数组,但随后给出了一个错误(System.Runtime.InteropServices.COMException(0x800A03EC):来自HRESULT的异常:0x800A03EC)。我可以在Excel工作表中看到数据,这个错误发生在导出数据的第75行。它即将消失的数值是===>注意渗流变化-大量渗流发生在堤坝下游,丹尼尔斯河东侧。 ExcelRange字符串的值为A1:CL1132 Pri

我正在尝试将数据表导出到Excel2007。当我到达Excel.Range行时,我部分导出了我创建的数组,但随后给出了一个错误(System.Runtime.InteropServices.COMException(0x800A03EC):来自HRESULT的异常:0x800A03EC)。我可以在Excel工作表中看到数据,这个错误发生在导出数据的第75行。它即将消失的数值是===>注意渗流变化-大量渗流发生在堤坝下游,丹尼尔斯河东侧。

ExcelRange字符串的值为A1:CL1132

Private Sub ExportExcelFast(ByVal dt As DataTable)
  Try


        Dim Excel As New Excel.Application
        Dim Wb As Microsoft.Office.Interop.Excel.Workbook
        Dim Ws As Microsoft.Office.Interop.Excel.Worksheet

        Excel.SheetsInNewWorkbook = 1
        Excel.Workbooks.Add()
        Excel.Worksheets.Select()
        Excel.Visible = True


        Dim col, row As Integer
        ' Copy the DataTable to an object array
        Dim rawData(dt.Rows.Count, dt.Columns.Count - 1) As Object

        ' Copy the column names to the first row of the object array
        For col = 0 To dt.Columns.Count - 1
            rawData(0, col) = dt.Columns(col).ColumnName.ToUpper
        Next



        ' Copy the values to the object array
        For col = 0 To dt.Columns.Count - 1
            For row = 0 To dt.Rows.Count - 1
                rawData(row + 1, col) = dt.Rows(row).ItemArray(col)
            Next
        Next


        ' Calculate the final column letter
        Dim finalColLetter As String = String.Empty
        finalColLetter = ExcelColName(dt.Columns.Count)

        Dim excelRange As String = String.Format("A1:{0}{1}", _
                                   finalColLetter, dt.Rows.Count + 1)

        Excel.Range(excelRange, Type.Missing).Value2 = rawData
        System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)

    Catch ex As Exception

            Throw

    End Try
End Sub

Public Function ExcelColName(ByVal Col As Integer) As String
    If Col < 0 And Col > 256 Then
        MsgBox("Invalid Argument", MsgBoxStyle.Critical)
        Return Nothing
        Exit Function
    End If
    Dim i As Int16
    Dim r As Int16
    Dim S As String
    If Col <= 26 Then
        S = Chr(Col + 64)
    Else
        r = CShort(Col Mod 26)
        i = CShort(System.Math.Floor(Col / 26))
        If r = 0 Then
            r = 26
            i = CShort(i - 1)
        End If
        S = Chr(i + 64) & Chr(r + 64)
    End If
    ExcelColName = S
End Function
专用子ExportExcelFast(ByVal dt作为数据表)
尝试
Dim Excel作为新的Excel.Application
将Wb设置为Microsoft.Office.Interop.Excel.Workbook
将Ws设置为Microsoft.Office.Interop.Excel.Worksheet
Excel.wWorkbook=1
Excel.Workbooks.Add()
Excel.Worksheets.Select()
Excel.Visible=True
Dim col,行为整数
'将数据表复制到对象数组
将rawData(dt.Rows.Count、dt.Columns.Count-1)作为对象进行调整
'将列名复制到对象数组的第一行
对于col=0到dt.Columns.Count-1
rawData(0,col)=dt.Columns(col.ColumnName.ToUpper
下一个
'将值复制到对象数组
对于col=0到dt.Columns.Count-1
对于行=0到dt.Rows.Count-1
rawData(行+1,列)=dt.行(行).ItemArray(列)
下一个
下一个
'计算最后一列字母
Dim finalColLetter As String=String.Empty
finalColLetter=ExcelColName(dt.Columns.Count)
Dim excelRange As String=String.Format(“A1:{0}{1}”_
最终收集器,dt.Rows.Count+1)
Excel.Range(excelRange,Type.Missing).Value2=rawData
System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
特例
扔
结束尝试
端接头
公共函数ExcelColName(ByVal列为整数)作为字符串
如果列<0且列>256,则
MsgBox(“无效参数”,MsgBoxStyle.Critical)
一无所获
退出功能
如果结束
Dim i As Int16
调暗r为Int16
像线一样变暗

如果Col显然Excel不喜欢您在单元格中输入=作为第一个字符。将第一个=替换为“=问题已解决