以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于导入Excel的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=161641)

--  作者:hongye
--  发布时间:2021/3/25 10:47:00
--  关于导入Excel的问题

图片点击可在新窗口打开查看此主题相关图片如下:01.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:02.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:03.jpg
图片点击可在新窗口打开查看

我想把这Excel导入到“表D”,大概的代码如下:

Dim Book As New XLS.Book("I:\\transDetail2021-03-24.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("表D").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"业务流水号","交易日期","交易时间","借方发生额","贷方发生额","账户余额","凭证种类","凭证号","交易渠道","交易地点","摘要","付款用途","对方账户","对方账户名","对方开户行","附言"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 5 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text
    Dim bi As String = sheet(n,1).Text
    If DataTables("表D").Find("业务流水号 = \'" & bh & "\' and 业务流水号 = \'" & bi & "\'") Is Nothing Then \'如果不存在同编号的订单
        Dim r As Row = Tables("表D").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("表D").ResumeRedraw()

但是现在出现几个问题:
1、导入时间特别长,其实是真正有效的数据只有230多行,但是该报表不知道为什么总行数有20000多行。
2、数据的240行和241行(由数据行确定)是不需要导入的,不知道怎么搞。
3、导入后“表D”里足足有20000多行,请问如何解决。

--  作者:有点蓝
--  发布时间:2021/3/25 11:09:00
--  
1、execl文件本身有问题,20000多的空行,应该是曾经编辑过数据,然后去掉了,但是在execl里仍然被视为有效的行。在行号处选中这20000多的空行,整行删除掉,再导入

2、判断一下单元格数据,如果是就退出

For n As Integer = 5 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text
if bh = "借方累计笔数" then exit for

3、手工删除,或者看上面第1条