Foxtable(狐表)用户栏目专家坐堂 → 上载excel数据如何实现多行数据相加


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

主题:上载excel数据如何实现多行数据相加

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
上载excel数据如何实现多行数据相加  发帖心情 Post By:2021/3/15 11:09:00 [显示全部帖子]

If User.Group = "财务" OrElse User.name = "开发者" OrElse User.Group = "行政" 

    If CurrentTable.name.contains("综合所得申报")
    Dim Book As New XLS.Book("C:\综合所得申报.xls")
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("综合所得申报").StopRedraw()
    Dim nms() As String = {"","","","身份证码","","","","","","","","","","","","","","","","","","","","","上月税务局累计子女教育","上月税务局累计赡养老人","上月税务局累计房贷利息","上月税务局累计租房租金","上月税务局累计继续教

育","","","","","","","","","","上月税务局实际扣税"}
        For n As Integer = 8 To Sheet.Rows.Count -1
        Dim sfz As String = sheet(n,3).Text
        Dim znjy As String = sheet(n,24).Text
        Dim sylr As String = sheet(n,25).Text
        Dim zfdk As String = sheet(n,26).Text
        Dim zfzj As String = sheet(n,27).Text
        Dim jxjy As String = sheet(n,28).Text
        Dim ybts As String = sheet(n,38).Text
        Dim dr As DataRow
            dr =  DataTables("综合所得申报").AddNew()
            For m As Integer = 0 To nms.Length - 1
            If nms(m) = "" Then Continue For '跳过空标题(这个if不用加end if)
                dr(nms(m)) = Sheet(n,m).Value
            Next
        Next
    Tables("综合所得申报").ResumeRedraw()
    End If

End If

上述代码我在上载excel数据至foxtable时,如果excel表格里面同一"身份证号"有相同的多条记录,那么“上月税务局实际扣税” 这栏数据如何实现多行数据的相加,累计到foxtable里面的一行数据里面去?谢谢。


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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/15 11:19:00 [显示全部帖子]

也就是说,如果foxtable里面已经有某个身份证号的数据行了,现在从excel再上载的话,就要检查一下是否有同身份证号的记录,如何有,就将上月税务局实际扣税” 这个数据叠加上去(相加),其他数据(比如"上月税务局累计子女教育"等)就是代替上去(不相加)。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/15 13:01:00 [显示全部帖子]

    If CurrentTable.name.contains("综合所得申报")
    Dim Book As New XLS.Book("C:\综合所得申报.xls")
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("综合所得申报").StopRedraw()
    Dim nms() As String = {"","","","身份证号","","","","","","","","","","","","","","","","","","","","","上月税务局累计子女教育","上月税务局累计赡养老人","上月税务局累计房贷利息","上月税务局累计租房租金","上月税务局累计继续教育","","","","","","","","","","上月税务局实际扣税"}
        For n As Integer = 8 To Sheet.Rows.Count -1
            Dim dr As DataRow = DataTables("综合所得申报").find("身份证号='" & sheet(n,3).Text & "'")
'            Dim dr As DataRow = Tables("综合所得申报").find("身份证码='" & sheet(n,3).Text & "'")
            If dr IsNot Nothing
                dr("上月税务局实际扣税") = dr("上月税务局实际扣税") + val(Sheet(n,38).Value)
            Else
                dr =  DataTables("综合所得申报").AddNew()
                For m As Integer = 0 To nms.Length - 1
                If nms(m) = "" Then Continue For '跳过空标题(这个if不用加end if)
                    dr(nms(m)) = Sheet(n,m).Value
                Next
            End If
        Next
    Tables("综合所得申报").ResumeRedraw()
    End If

现在代码改了。附页是excel表格,但是执行起来没有反应,不知道是哪里的问题?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:综合所得申报.rar




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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/15 14:03:00 [显示全部帖子]

加上4句msgbox代码,执行起来也是没有任何反应,没有任何警告,也没有上传数据。是不是要把excel里面的文本格式数据转化成数字格式,如何转化?

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/15 20:21:00 [显示全部帖子]

If User.Group = "财务" OrElse User.name = "开发者" OrElse User.Group = "行政" 
    If CurrentTable.name.contains("工资计算")
    Dim Book As New XLS.Book("C:\综合所得申报.xls")
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("工资计算").StopRedraw()
    Dim nms() As String = {"","","","身份证号","","","","","","","","","","","","","","","","","","","","","上月税务局累计子女教育","上月税务局累计赡养老人","上月税务局累计房贷利息","上月税务局累计租房租金","上月税务局累计继续教育","","","","","","","","","","上月税务局实际扣税",""}
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim dr As DataRow = DataTables("工资计算").find("身份证号='" & sheet(n,3).Text & "'")
            If dr IsNot Nothing
                dr("上月税务局实际扣税") = dr("上月税务局实际扣税") + val(Sheet(n,38).Value)
            Else
                dr =  DataTables("工资计算").AddNew()
                For m As Integer = 0 To nms.Length - 1
                If nms(m) = "" Then Continue For '跳过空标题(这个if不用加end if)
                    dr(nms(m)) = Sheet(n,m).Value
                Next
            End If
        Next
    Tables("工资计算").ResumeRedraw()
    End If
End If

如果 excel 里面的记录在 foxtable 里面找不到而要新增数据行,上述代码就可以执行,上传的数据也没错。但是,如果 foxtable 里面已经存在某个身份证号的记录,而 excel 表格里面如果有两个相同身份证号的记录,那么,第二条记录应该覆盖第一条记录,现在不会覆盖掉;"上月税务局实际扣税" 应该累加的,现在也不会累加。请问什么原因?

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/16 15:15:00 [显示全部帖子]

会依次弹出身份证号码、True 和 Sheet(n,38) 的值来,但是 Sheet(n,38) 的值没有填入 foxtable 的 cell里面去。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/17 14:41:00 [显示全部帖子]

我把 datacolchanged 和 datacolchanging 里面的全部代码都删除了,还是一样:可以实现新增数据行;如果excel里面有两个同身份证号的行,那么第二行可以对刚新增的第一行数据进行覆盖和叠加;如果是我 foxtable 里面已经存在的行,则不能实现同身份证号数据的覆盖和叠加。
我可以用QQ发项目给你测试一下吗?

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/17 17:16:00 [显示全部帖子]

直接查看excel,看不到单引号。把execl数据复制到记事本看,也看不到任何符号。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/18 10:56:00 [显示全部帖子]

Dim dr As DataRow = DataTables("工资计算").find("身份证号='" & sheet(n,3).Text & "'")

如果我对 foxtable 数据表的数据进行了筛选,那上述那句代码用的 DataTables("工资计算") 对隐藏的数据行都会进行叠加和覆盖,还是只对看得见的数据行进行叠加和覆盖?我希望是只对看得见的数据行进行叠加和覆盖。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/3/18 13:23:00 [显示全部帖子]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:菜单,导入税务局上月综合所得申报,Click
详细错误信息:
从字符串“”到类型“Single”的转换无效。
输入字符串的格式不正确。

现在上传时总是出现上述警告。excel 里面需要上传的6列数据全部都是文本格式的(比如29.70、0.00等,数据前面都没有单引号),而 foxtable 里面的全部都是单精度小数。是否应该将 excel 里面的数据转换为单精度小数才行?
我改成如下代码也还是出现这个警告:
                dr("上月税务局累计子女教育") = CSng(val(Sheet(n,24).Value)) '对同身份证号的数据进行覆盖
                dr("上月税务局累计赡养老人") = CSng(val(Sheet(n,25).Value))
                dr("上月税务局累计房贷利息") = CSng(val(Sheet(n,26).Value))
                dr("上月税务局累计租房租金") = CSng(val(Sheet(n,27).Value))
                dr("上月税务局累计继续教育") = CSng(val(Sheet(n,28).Value))
                dr("上月税务局实际扣税") = dr("上月税务局实际扣税") + CSng(val(Sheet(n,38).Value)) '对同身份证号的数据进行叠加
请问是为什么?


 回到顶部
总数 12 1 2 下一页