VB.NET Excel导入

本文介绍了使用VB.NET进行Excel批量导入到数据库的步骤,包括将EXCEL转换为Datatable,然后转化为List,最后通过BLL和DAL层实现数据库的插入操作。重点强调了前台字段与数据库的一致性和非空判断的重要性。
摘要由CSDN通过智能技术生成

最近上班发现一定要注意两点:
1.前台的字段类型一定要与数据库保持一致!!!
2.一定要做非空判断!!!

下面进入正题,最近两天在做excel表格批量导入,从前台程序直接打开EXCEL,批量导入到数据库中

思路是:
1.先把EXCEL表格转换成Datatable,
2.然后datatable转成list,
3.把list保存到数据库中

1.首先在NPOI类中写四个方法,导入的,两个导入进入转换成datatable,(一个xls,一个xlsx),两个读取格式的(*就是第一步,转换成datatable)

  Public Shared Function ExcelToTableForXLS(ByVal filePath As String) As DataTable
        Dim dt As DataTable = New DataTable
        Dim fs As FileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read)
        Dim hssfworkbook As HSSFWorkbook = New HSSFWorkbook(fs)
        Dim sheet As ISheet = hssfworkbook.GetSheetAt(0)
        '表头
        Dim header As IRow = sheet.GetRow(sheet.FirstRowNum)
        Dim columns As List(Of Integer) = New List(Of Integer)
        Dim i As Integer = 0
        Do While (i < header.LastCellNum)
            Dim obj As Object = GetValueTypeForXLS(CType(header.GetCell(i), HSSFCell))
            If ((obj Is Nothing) OrElse (obj.ToString = String.Empty)) Then
                dt.Columns.Add(New DataColumn(("Columns" + i.ToString)))
                'continue;
            Else
                dt.Columns.Add(New DataColumn(obj.ToString))
            End If

            columns.Add(i)
            i = (i + 1)
        Loop

        '数据
        Dim m As Integer = (sheet.FirstRowNum + 1)
        Do While (m <= sheet.LastRowNum)
            Dim dr As DataRow = dt.NewRow
            Dim hasValue As Boolean = False
            For Each j As Integer In columns
                dr(j) = GetValueTypeForXLS(CType(sheet.GetRow(m).GetCell(j), HSSFCell))
                If ((Not (dr(j)) Is Nothing) _
                            AndAlso (dr(j).ToString <> String.Empty)) Then
                    hasValue = True
                End If

            Next
            If hasValue Then
                dt.Rows.Add(dr)
            End If

            m = (m + 1)
        Loop

        Return dt
    End Function


    Private Shared Function GetValueTypeForXLS(ByVal cell As HSSFCell) As Object
        If (cell Is Nothing) Then
            Return Nothing
        End If

        Select Case (cell.CellTy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值