Foxtable(狐表)用户栏目专家坐堂 → [求助]导入excel或者txt


  共有2611人关注过本帖树形打印复制链接

主题:[求助]导入excel或者txt

帅哥哟,离线,有人找我吗?
huhu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]导入excel或者txt  发帖心情 Post By:2016/4/8 16:54:00 [显示全部帖子]

导入excel或者txt。
怎么能做到无论选择excel或者txt都能自动判断,导入呢。就不用就2个按钮,分别导入excel和导入txt了。一个按钮就搞定。

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim ip As New Merger
    ip.SourcePath = dlg.FileName '指定数据文件
    ip.SourceTableName = "订单执行统计表$" '指定要导入的表    
    ip.DataTableName ="订单" '导入后的表名    
    ip.Format = "Excel" '指定导入格式
    ip.merge()
End If

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/4/8 18:22:00 [显示全部帖子]


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sn.txt


.NET Framework 版本:2.0.50727.8670
Foxtable 版本:2015.12.22.1
错误所在事件:
详细错误信息:
'C:\Users\基永\Desktop\SN.txt'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。


Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "文件|*.xls;*.txt" '设置筛选器
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sn.txt

If dlg.ShowDialog = DialogResult.OK Then
    Dim info As new fileinfo(dlg.FileName)
    If info.Extension = ".txt" Then
        Dim mg As New Merger
        mg.SourcePath = dlg.filename '指定数据文件所在目录
        msgbox(0)
        mg.Format = "Delimited" '指定格式
        msgbox(1)
        mg.SourceTableName = "SN" '指定要合并的文件,无需扩展名
        msgbox(2)
        mg.Header = True
        msgbox(3)
        mg.DataTableName = "扫描配货明细" '指定接收数据的表
        msgbox(4)
        mg.Merge() '开始合并-----提示报错,需要导入的SN.txt不是有效的路径
        msgbox(5)
    ElseIf info.Extension = ".xls" Then
        Dim mg As New Merger
        mg.SourcePath = dlg.filename
        mg.Format = "excel" '指定格式
        mg.SourceTableName = "序列号$" '指定要合并的表
        mg.DataTableName = "扫描配货明细" '指定接收数据的表
        mg.Merge() '开始合并
    End If
End If
For Each dr As DataRow In DataTables("扫描配货明细").DataRows
    If dr("SN") = "" Then
        dr.Delete
    End If
Next
DataTables("扫描配货明细").Save





 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/4/11 9:19:00 [显示全部帖子]

TXT里面是这样。
096597223
096597224
前面第一位是有0的。怎么导入到ft后,第一位0没了。
变为了
96597223
96597224
这是怎么回事?
excel就没这个问题。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]merge合并是不是不能后台统计啊。  发帖心情 Post By:2016/4/11 10:49:00 [显示全部帖子]

datacolchange:
msgbox(11)----执行
Dim sum As Integer = DataTables("扫描配货明细").SQLCompute("Sum(数量)","状态 = '生产结束扫描完成'")
ssdsl.text = "实扫到数量:" & sum
msgbox(22)---执行

但执行了红色的代码,merge excel后。sum的值没有改变。


Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "文件|*.xls;*.txt" '设置筛选器
If dlg.ShowDialog = DialogResult.OK Then
    Dim info As new fileinfo(dlg.FileName)
    If info.Extension = ".txt" Then
        Dim strs As String = FileSys.ReadAllText(dlg.FileName)
        strs = strs.Replace(vblf,"")
        Dim rs() As String = strs.Split(vbcr)
        For i As Integer = 0 To rs.Length - 1
            Dim dr As DataRow = DataTables("扫描配货明细").Addnew()
            dr("SN") = rs(i)
        Next
    ElseIf info.Extension = ".xls" Then
        DataTables("扫描配货明细").Addnew()
        Dim mg As New Merger
        mg.SourcePath = dlg.filename
        mg.Format = "excel" '指定格式
        mg.SourceTableName = "序列号$" '指定要合并的表
        mg.DataTableName = "扫描配货明细" '指定接收数据的表
        mg.Merge() '开始合并
    End If
End If
For Each dr As DataRow In DataTables("扫描配货明细").DataRows
    If dr("SN") = "" Then
        dr.Delete
    End If
Next
DataTables("扫描配货明细").Save

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/4/11 10:57:00 [显示全部帖子]

保存过的。
另外导入txt。能正常统计。
导入excel。就不统计。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/4/11 11:11:00 [显示全部帖子]

加一句重置列代码?怎么写?
DataTables("扫描配货明细").DataCols("SN").RaiseDataColChanged?

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/4/11 16:27:00 [显示全部帖子]

           For Each dr As DataRow In DataTables("扫描配货明细").datarows
                If dr.RowState = DataRowState.Added Then
                    msgbox(0)
                    DataTables("扫描配货明细").DataCols("SN").RaiseDataColChanged(dr)
                    msgbox(1)                    
                    dr("入库方式") = "导入入库"
                    msgbox(2)                    
                End If
            Next
假如果有2行都是新增行,那么为什么指弹出一次0,1,2,不应该是2次么。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/4/11 16:51:00 [显示全部帖子]

ElseIf info.Extension = ".xls" Then
            Dim mg As New Merger
            mg.SourcePath = dlg.filename
            mg.Format = "excel" '指定格式
            mg.SourceTableName = "序列号$"
            mg.DataTableName = "扫描配货明细"
            mg.Merge() '开始合并
           For Each dr As DataRow In DataTables("扫描配货明细").Select("")
                If dr.RowState = DataRowState.Added Then
                    msgbox(dr.RowState)-----------返回4
                    DataTables("扫描配货明细").DataCols("SN").RaiseDataColChanged(dr)
                    msgbox(1)                    
                    dr("入库方式") = "导入入库"
                    msgbox(2)                    
                End If
            Next
        End If
只有第一行的入库方式是导入入库。第二行为空。搞不懂怎么回事,新增行明明是2行么。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/4/12 11:45:00 [显示全部帖子]

ElseIf info.Extension = ".xls" Then
            Dim mg As New Merger
            mg.SourcePath = dlg.filename
            mg.Format = "excel" '指定格式
            mg.SourceTableName = "序列号$"
            mg.DataTableName = "扫描配货明细"
            mg.Merge() '开始合并
            For Each dr As DataRow In DataTables("扫描配货明细").Select("")
                'If dr.RowState = DataRowState.Added Then
                msgbox(dr.RowState)
                DataTables("扫描配货明细").DataCols("SN").RaiseDataColChanged(dr)
                msgbox(1)
                dr("入库方式") = "导入入库"
                msgbox(2)
                'End If
            Next
        End If
导入的xls,共计有3行。
共计弹出4次,每次都是2,1,2。
让我更搞不懂的是怎么多出来第一行,这数据是哪里来的?如附件。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160412113938.png
图片点击可在新窗口打开查看



 回到顶部