Foxtable(狐表)用户栏目专家坐堂 → EXCEL的问题


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

主题:EXCEL的问题

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2021/4/9 16:39:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,窗口1,Button5,Click
详细错误信息:
列“号”不属于表 临时箱单。

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2021/4/9 16:42:00 [只看该作者]

        For Each dc As DataCol In DataTables("临时箱单").DataCols
        Dim nms As String = dc.Name
        r(nms(m)) = Sheet(n,m).Value
好像是这个3条有问题

 回到顶部
帅哥,在线噢!
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/9 16:45:00 [只看该作者]

临时箱单表列名和execl里的列名是怎么对应的?

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2021/4/9 17:11:00 [只看该作者]

不知道咋对应哦

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/9 17:17:00 [只看该作者]

那就先搞清楚这个对应关系,如果没有任何规律,程序做不了的

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2021/4/10 18:08:00 [只看该作者]

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    MessageBox.Show("你选择的是:" & dlg.FileName,"提示") '提示用户选择的文件
    Dim Str1 As String = dlg.FileName
    Dim fx As String
    If Str1 > "" AndAlso Str1.Contains("返修") Then
        fx = "返修单"
    End If
    Dim khmc As String
    khmc = FileSys.GetName(dlg.FileName).SubString(0,3)
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim Rg1 As MSExcel.Range
    Dim rowsmax As Integer = 0
    Dim colmax As Integer = 0
    Dim x As String
    Dim y As String
    Dim x0 As String
    Dim y0 As String
    Dim x1 As String
    Dim y1 As String
    Dim x2 As String
    Dim y2 As String
    Dim x3 As String
    Dim y3 As String
    Dim x4 As String
    Dim y4 As String
    Dim chrq As String
    Dim rg = Ws.UsedRange
    For i As Integer =1 To rg.Columns.count
        Dim r = ws.cells(1000,i).End(MsExcel.XlDirection.xlUp).Row
        If r > RowsMax Then
            RowsMax = r
        End If
    Next
    For i As Integer = 1 To rowsMax
        Dim r = ws.cells(i,200).End(MsExcel.XLDirection.xlToLeft).Column
        If r > ColMax  Then
            ColMax = r
        End If
    Next
    For i As Integer = 1 To RowsMax
        For j As Integer = 1 To ColMax
            Rg1 = Ws.Cells(i,j)
            If Rg1.text = "箱号" Then
                x = i
                y = j
            End If
        Next
    Next
    For j As Integer = 1 To ColMax
        Rg1 = Ws.Cells(x,j)
        If Rg1.text = "颜色" Then
            x3 = x
            y3 = j
        End If
    Next
    For j As Integer = 1 To ColMax
        Rg1 = Ws.Cells(x,j)
        If Rg1.text = "合计" Then
            x4 = x
            y4 = j
        End If
    Next
    For i As Integer = 1 To RowsMax
        For j As Integer = 1 To ColMax
            Rg1 = Ws.Cells(i,j)
            If Rg1.text = "本次出货" Then
                x0 = i
                y0 = j
            End If
        Next
    Next
    For i As Integer = 1 To RowsMax
        For j As Integer = 1 To ColMax
            Rg1 = Ws.Cells(i,j)
            If Rg1.text = "总计:" Then
                x1 = i
                y1 = j
            End If
        Next
    Next
    For i As Integer = 1 To RowsMax
        For j As Integer = 1 To ColMax
            Rg1 = Ws.Cells(i,j)
            If Rg1.text.Contains("出货日期") Then
                x2 = i
                y2 = j
                Dim chr As String
                chr = Ws.Cells(i,j).Value.SubString(5).Trim(" ").Replace("/","-")
                Dim Day As Date = chr
                chrq = Format(Day,"d")
            End If
        Next
    Next
    Dim tbl As New DataTableBuilder("临时箱单")
    Dim Lst As New List(Of String)
    Dim nms() As String
    With tbl
        For j As Integer = y To y0
            Rg1 = Ws.Cells(x,j)
            Dim bt As String = Rg1.text.Trim(" ")
            tbl.AddDef(bt, Gettype(String), 32)
            Lst.Add(bt)
        Next
        nms = Lst.ToArray() '将集合转换为数组
    End With
    tbl.Build()
    MainTable= Tables("表A")
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("临时箱单").StopRedraw()
    For n As Integer = x To x1-2
        Dim r As Row = Tables("临时箱单").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    Next
    Tables("临时箱单").ResumeRedraw()
    Dim dtb As New DataTableBuilder("临时出货明细")
    dtb.AddDef("箱号", Gettype(String), 4)
    dtb.AddDef("品类", Gettype(String), 10)
    dtb.AddDef("款号", Gettype(String), 10)
    dtb.AddDef("颜色", Gettype(String), 10)
    dtb.AddDef("规格", Gettype(String), 10)
    dtb.AddDef("数量", Gettype(Double))
    dtb.AddDef("出货日期", Gettype(String), 15)
    dtb.Build()


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


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2021/4/10 18:08:00 [只看该作者]

    Dim Lst1 As New List(Of String)
    Dim kms() As String
    With dtb
        For j As Integer = y3+1 To y4-1
            Rg1 = Ws.Cells(x,j)
            Dim bt As String = Rg1.text.Trim(" ")
            dtb.AddDef(bt, Gettype(String), 32)
            Lst1.Add(bt)
        Next
        kms = Lst1.ToArray() '将集合转换为数组
    End With
    For Each dr1 As DataRow In DataTables("临时箱单").DataRows
        For Each km As String In kms
            If dr1(km)> ""  Then
                Dim dr2 As DataRow = DataTables("临时出货明细").AddNew()
                dr2("箱号") = dr1("箱号")
                dr2("品类") = dr1("品类")
                dr2("款号") = dr1("款号").ToUpper()
                dr2("颜色") = dr1("颜色")
                dr2("规格") = km
                dr2("数量") = dr1(km)
                dr2("出货日期") = chrq
            End If
        Next
    Next
    MainTable = Tables("表A")
End If

问题暂时解决了,就是比较麻烦,先要见一个导入表,然后再建一个明细表,请问有什么办法解决?

 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/11 20:11:00 [只看该作者]

没看懂,为什么先要见一个导入表,然后再建一个明细表?

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


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2021/4/11 20:51:00 [只看该作者]

现将EXCEL导入到fxtable临时表里,由于不是想要的格式,所以又将临时表再变成竖向表,这样就达到我的要求了


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


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2021/4/11 20:52:00 [只看该作者]

这样有利于我统计数据

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