Foxtable(狐表)用户栏目专家坐堂 → 求助!导入EXCEL表数据全部为文本


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

主题:求助!导入EXCEL表数据全部为文本

美女呀,离线,留言给我吧!
0799snow
  41楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
非常感谢,我自己也做了微调,已经成功了  发帖心情 Post By:2019/7/24 13:57:00 [显示全部帖子]

非常感谢!!!我自己也做了微调,已经成功了!!!

 回到顶部
美女呀,离线,留言给我吧!
0799snow
  42楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
有新问题求助老师!  发帖心情 Post By:2019/9/20 15:59:00 [显示全部帖子]

上次已经做了一个调休表,是针对具体日期调成工作日和休假日的,但是又出现一个分部门是整体将周一调为休假日,周六调为工作日,这个如何实现,在之前的代码这里做调整可以吗?图片点击可在新窗口打开查看项目文件上传,谢谢大师!!!

 回到顶部
美女呀,离线,留言给我吧!
0799snow
  43楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
求助老师,上传项目  发帖心情 Post By:2019/9/21 11:11:00 [显示全部帖子]

老师,不好意思,昨天项目没上传成功,今天重新上传,现在有表[销售卡信息]里所属部门“采购”周一、周日休息,周六正常上班,想在明细表[周六周日]中显示周一、周日的交易 记录,而象所属部门为“业务”的,[周六周日]列中显示周六和周日的交易 记录。还有一种方式在[调休表]里,假如所属部门为“采购”的,周一全部调休假日,周六全部调为工作日,因为明细表是导入的,可能需要改导入的代码,或者,在调休表里怎么调整代码?非常感谢老师的帮助
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:休假日测试项目.table


 回到顶部
美女呀,离线,留言给我吧!
0799snow
  44楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
调休表目前是手工录入  发帖心情 Post By:2019/9/21 12:45:00 [显示全部帖子]

调休表目前是手工录入,没有代码,我是想是否可以根据需要,把需要的周一调为工作日

 回到顶部
美女呀,离线,留言给我吧!
0799snow
  45楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
老师,还是请你帮帮我吧  发帖心情 Post By:2019/9/21 14:36:00 [显示全部帖子]

我看了别人的关于法定假日的那个项目。但是我是根据基本信息表里的列而变动工作日的,而且要全部都变动,这个对于我来说比较难,要不您可以在我那个导入数据的代码里,加上对基本信息表里[所属部门]列为‘业务’的在明细表的[周六周日]列显示周六周日和调休表里的调为休假日,而[所属部门]为‘采购’的[周六周日]列显示周日、周一和调休表里的调为休假日。谢谢老师!!!

 回到顶部
美女呀,离线,留言给我吧!
0799snow
  46楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
老师,改了后,报了一个错误  发帖心情 Post By:2019/9/21 16:48:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看报了这个图片的错误提示,是这个“R”未定义吗

 回到顶部
美女呀,离线,留言给我吧!
0799snow
  47楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
老师,我项目里之前还有这些代码,是连接的问题吗  发帖心情 Post By:2019/9/21 16:56:00 [显示全部帖子]

For Each r As Row In Tables("明细表").rows
    r("周六周日") = Nothing
    If cdate(r("交易时间")).DayOfWeek = 0 OrElse cdate(r("交易时间")).DayOfWeek = 6 Then
        r("周六周日") = format(cdate(r("交易时间")), "dddd")
        For Each dr As DataRow In DataTables("调休表").Select("")
            For i As Integer = 1 To 4
                Dim cname As String = "调为工作日" & i
                If dr(cname) <> Nothing AndAlso cdate(r("交易时间")).Date = dr(cname) Then
                    r("周六周日") = Nothing
                    goto label2
                End If
            Next
        Next
        label2:
    Else
        For Each dr As DataRow In DataTables("调休表").Select("")
            For i As Integer = 1 To 7
                Dim cname As String = "调为休假日" & i
                If dr(cname) <> Nothing AndAlso cdate(r("交易时间")).Date = dr(cname) Then
                    r("周六周日") = dr("调休原因")
                    goto label1
                End If
            Next
        Next
        label1:
    End If
Next


 

2、

 

For Each kh As String In DataTables("明细表").GetValues("卡号")
    Dim drs = DataTables("明细表").Select("卡号='" & kh & "' and 交易类型='购买'", "交易时间")
    For i As Integer = 1 To drs.count-1
        Dim sp As TimeSpan = drs(i)("交易时间") - drs(i-1)("交易时间")
        If sp.TotalHours <= 1 Then
            drs(i)("一小时内") = True
            drs(i)("三小时内") = Nothing
            drs(i)("一天内") = Nothing
        ElseIf sp.TotalHours <= 3 Then
            drs(i)("一小时内") = Nothing
            drs(i)("三小时内") = True
            drs(i)("一天内") = Nothing
        ElseIf sp.TotalHours <= 24 Then
            drs(i)("一小时内") = Nothing
            drs(i)("三小时内") = Nothing
            drs(i)("一天内") = True
        End If
    Next
Next

 




 回到顶部
美女呀,离线,留言给我吧!
0799snow
  48楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
完整代码  发帖心情 Post By:2019/9/21 17:21:00 [显示全部帖子]

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    OutPut.Show("你选择了" & dlg.FileNames.Length & "个文件, 分别是:")
    DataTables("明细表").ResumeRedraw
    DataTables("明细表").StopRedraw
    For Each fl As String In dlg.FileNames
        Dim Book As New XLS.Book(fl)
        '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
        Dim nms() As String ={"卡号","持卡人","交易时间","交易类型","金额","商品", "数量","单价","奖励积分","余额","地点"}
        '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        For n As Integer = 4 To Sheet.Rows.Count -1
            Dim kh As String = sheet(n,0).text
            If kh <> "小计" AndAlso kh <> "总计" Then
                Dim sj As String = sheet(n,2).Text
                Dim d As Date = Nothing
                Date.TryParse(sj, d)
                Dim fdr As DataRow
                If d <> Nothing Then
                    fdr = DataTables("明细表").Find("交易时间 > #" & d.AddMinutes(-1) & "# and 交易时间 < #" & d.AddMinutes(1) & "#")
                End If
                If d <> Nothing Then
                    fdr = DataTables("明细表").Find("交易时间 = #" & d & "#")
                Else
                    Continue For
                End If
                If fdr Is Nothing Then '如果不存在同编号的订单
                    Dim r As Row = Tables("明细表").AddNew()
                    For m As Integer = 0 To nms.Length - 1
                        If r.Table.Cols(nms(m)).IsDate Then
                            Date.TryParse(Sheet(n,m).Value, d)
                            r(nms(m)) = d
                        ElseIf r.Table.Cols(nms(m)).IsNumeric Then
                            r(nms(m)) = val(Sheet(n,m).Value)
                        Else
                            r(nms(m)) = Sheet(n,m).Value
                        End If
                    Next
                End If
            End If
        Next
    Next
   Dim lst1 As List(Of String)  = DataTables("销售卡信息").GetValues("持卡人","所属部门='采购'")
For Each r As Row In Tables("明细表").rows
    If lst1.Contains(r("交易时间")) Then
        If cdate(r("交易时间")).DayOfWeek = 0  OrElse cdate(r("交易时间")).DayOfWeek = 1 Then
            r("周六周日") = cdate(r("交易时间")).DayOfWeek
        End If
    Else
        If cdate(r("交易时间")).DayOfWeek = 0 OrElse cdate(r("交易时间")).DayOfWeek = 6  Then
            r("周六周日") = cdate(r("交易时间")).DayOfWeek
        End If
    End If
Next
        label2:
        Else
            For Each dr As DataRow In DataTables("调休表").Select("")
                For i As Integer = 1 To 7
                    Dim cname As String = "调为休假日" & i
                    If dr(cname) <> Nothing AndAlso cdate(r("交易时间")).Date = dr(cname) Then
                        r("周六周日") = dr("调休原因")
                        goto label1
                    End If
                Next
            Next
            label1:
        End If
    Next
    For Each kh As String In DataTables("明细表").GetValues("卡号")
        Dim drs = DataTables("明细表").Select("卡号='" & kh & "' and 交易类型='购买'", "交易时间")
        For i As Integer = 1 To drs.count-1
            Dim sp As TimeSpan = drs(i)("交易时间") - drs(i-1)("交易时间")
            If sp.TotalHours <= 1 Then
                drs(i)("一小时内") = True
                drs(i)("三小时内") = Nothing
                drs(i)("一天内") = Nothing
            ElseIf sp.TotalHours <= 3 Then
                drs(i)("一小时内") = Nothing
                drs(i)("三小时内") = True
                drs(i)("一天内") = Nothing
            ElseIf sp.TotalHours <= 24 Then
                drs(i)("一小时内") = Nothing
                drs(i)("三小时内") = Nothing
                drs(i)("一天内") = True
            End If
        Next
    Next
    DataTables("明细表").ResumeRedraw
End If


 回到顶部
美女呀,离线,留言给我吧!
0799snow
  49楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
项目也上传  发帖心情 Post By:2019/9/21 17:25:00 [显示全部帖子]

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

项目文件
[此贴子已经被作者于2019/9/21 17:41:42编辑过]

 回到顶部
美女呀,离线,留言给我吧!
0799snow
  50楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:834 威望:0 精华:0 注册:2019/3/19 8:23:00
老师,我悟性太差了  发帖心情 Post By:2019/9/21 18:33:00 [显示全部帖子]

麻烦你帮我通篇看下,我改代码后,不是少了end if 就是FOR后面没NEXT,我加了好几个,还是不对。
Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    OutPut.Show("你选择了" & dlg.FileNames.Length & "个文件, 分别是:")
    DataTables("明细表").ResumeRedraw
    DataTables("明细表").StopRedraw
    For Each fl As String In dlg.FileNames
        Dim Book As New XLS.Book(fl)
        '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
        Dim nms() As String ={"卡号","持卡人","交易时间","交易类型","金额","商品", "数量","单价","奖励积分","余额","地点"}
        '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        For n As Integer = 4 To Sheet.Rows.Count -1
            Dim kh As String = sheet(n,0).text
            If kh <> "小计" AndAlso kh <> "总计" Then
                Dim sj As String = sheet(n,2).Text
                Dim d As Date = Nothing
                Date.TryParse(sj, d)
                Dim fdr As DataRow
                If d <> Nothing Then
                    fdr = DataTables("明细表").Find("交易时间 > #" & d.AddMinutes(-1) & "# and 交易时间 < #" & d.AddMinutes(1) & "#")
                End If
                If d <> Nothing Then
                    fdr = DataTables("明细表").Find("交易时间 = #" & d & "#")
                Else
                    Continue For
                End If
                If fdr Is Nothing Then '如果不存在同编号的订单
                    Dim r As Row = Tables("明细表").AddNew()
                    For m As Integer = 0 To nms.Length - 1
                        If r.Table.Cols(nms(m)).IsDate Then
                            Date.TryParse(Sheet(n,m).Value, d)
                            r(nms(m)) = d
                        ElseIf r.Table.Cols(nms(m)).IsNumeric Then
                            r(nms(m)) = val(Sheet(n,m).Value)
                        Else
                            r(nms(m)) = Sheet(n,m).Value
                        End If
                    Next
                End If
            End If
        Next
    Next
    Dim lst1 As List(Of String)  = DataTables("销售卡信息").GetValues("持卡人","所属部门='采购'")
    For Each r As Row In Tables("明细表").rows
        If lst1.Contains(r("交易时间")) Then
            If cdate(r("交易时间")).DayOfWeek = 0  OrElse cdate(r("交易时间")).DayOfWeek = 1 Then
                r("周六周日") = cdate(r("交易时间")).DayOfWeek
            End If
        Else
            If cdate(r("交易时间")).DayOfWeek = 0 OrElse cdate(r("交易时间")).DayOfWeek = 6  Then
                r("周六周日") = cdate(r("交易时间")).DayOfWeek
            End If
        End If
    Next
Next
label2:
Else
    For Each dr As DataRow In DataTables("调休表").Select("")
        For i As Integer = 1 To 7
            Dim cname As String = "调为休假日" & i
            If dr(cname) <> Nothing AndAlso cdate(r("交易时间")).Date = dr(cname) Then
                r("周六周日") = dr("调休原因")
                goto label1
            End If
        Next
    Next
    label1:
End If
Next
For Each kh As String In DataTables("明细表").GetValues("卡号")
    Dim drs = DataTables("明细表").Select("卡号='" & kh & "' and 交易类型='购买'", "交易时间")
    For i As Integer = 1 To drs.count-1
        Dim sp As TimeSpan = drs(i)("交易时间") - drs(i-1)("交易时间")
        If sp.TotalHours <= 1 Then
            drs(i)("一小时内") = True
            drs(i)("三小时内") = Nothing
            drs(i)("一天内") = Nothing
        ElseIf sp.TotalHours <= 3 Then
            drs(i)("一小时内") = Nothing
            drs(i)("三小时内") = True
            drs(i)("一天内") = Nothing
        ElseIf sp.TotalHours <= 24 Then
            drs(i)("一小时内") = Nothing
            drs(i)("三小时内") = Nothing
            drs(i)("一天内") = True
        End If
    Next
Next
DataTables("明细表").ResumeRedraw
End If

[此贴子已经被作者于2019/9/21 20:05:48编辑过]

 回到顶部
总数 53 上一页 1 2 3 4 5 6 下一页