以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] BOM 在导出的时候,将每个组件当成一个独立的Sheet输出  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=107992)

--  作者:2900819580
--  发布时间:2017/10/13 20:17:00
--  [求助] BOM 在导出的时候,将每个组件当成一个独立的Sheet输出


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

 

BOM 在导出的时候,将每个组件当成一个独立的Sheet输出

 

如上图所示,如何可以做到,将整个BOM输入为一个BOM表,将每一个组件下的父阶输出为独立的Sheet

 

注,可以根据i 列中的 “--” 判断

[此贴子已经被作者于2017/10/13 20:17:27编辑过]

--  作者:有点蓝
--  发布时间:2017/10/13 20:35:00
--  
按i 列中的 “--” 锁筛选后再导出

Tables("表A").Filter = "i = \'--\'"

--  作者:2900819580
--  发布时间:2017/10/13 21:07:00
--  
以下是引用有点蓝在2017/10/13 20:35:00的发言:
按i 列中的 “--” 锁筛选后再导出

Tables("表A").Filter = "i = \'--\'"

 

还是不太明白。这样只可以导出全部的组件而,我的想法是每一个组件生成一个Sheet

 

如:

11       1R.51.BMU752KT000/001

 

是一个组件,则生成单独的Sheet,Sheet的名称为对应行的(“名称”)

组件下的所有物料,含组件,复制到新的Sheet上


--  作者:有点蓝
--  发布时间:2017/10/13 21:53:00
--  
Dim t As Table = Tables("表A").
Dim Products As List(Of String) = t.DataTable.GetValues("总库号","i=\'--\'")
For Each p As String In Products 
    t.Filter = "总库号 like \'" & p & "%\'"
    t.SaveExcel("f:\\abc.xls",p)
Next

--  作者:2900819580
--  发布时间:2017/10/16 16:18:00
--  


此主题相关图片如下:foxtable.png
按此在新窗口浏览图片

老师,按代码执行后会出现两个问题,

1》 如总序号是1.3    他会把1.30 1.31..............都含括进去,

1.3
1.3.1
1.3.2
1.30
1.31
    我修改代码为     tb.Filter = "总序号 like \'" & p & ".%\'" Or "总序号 =  \'" & p & "\'"

    但出现如上图的错误。
 
2》 如上图所示,他会把后续其它阶层的也含括进去 
这个我就不知如何处理了。 
1.1
1.1.1
1.1.1.1
1.1.1.2
1.1.1.3
1.1.1.4

--  作者:有点蓝
--  发布时间:2017/10/16 20:32:00
--  
tb.Filter = "总序号 like \'" & p & ".%\' Or 总序号 =  \'" & p & "\'"

编号规律要统一,如
1.03
1.03.01
1.03.02
1.30
1.31

或者增加辅助列进行分类

--  作者:2900819580
--  发布时间:2017/10/16 21:35:00
--  


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

 

 

tb.Filter = "总序号 like \'" & p & ".%\' Or 总序号 =  \'" & p & "\'"

 

执行后,得到上面左边的效果,但我想要的是右边的样子。



--  作者:有点蓝
--  发布时间:2017/10/16 21:54:00
--  
参考6楼后面的2种用法
--  作者:有点甜
--  发布时间:2017/10/17 9:13:00
--  
 不会做的话,把你的数据表发上来测试。
--  作者:2900819580
--  发布时间:2017/10/17 14:17:00
--  

谢谢老师,已经做好了,思路很重要,,,,,,,把代码分享出来。。。。。

 

Dim tb As Table = Tables(e.Form.Name & "_Table1")
Dim dt As DataTable = tb.DataTable   
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    tb.SaveExcel(dlg.FileName, "BOM")  \'保存文件   
    Dim Ps As List(Of String) = dt.GetValues("排序号","i = \'--\'")
    If ps.Count > 0 Then
        For Each p As String In Ps
        Dim fr As DataRow = dt.find("排序号 = \'" & P & "\'")
        Dim jc As Integer = fr("阶层")
            tb.Filter = "( 阶层 = \'"  & jc + 1 & "\' and 排序号 Like \'" & p & ".%\') or (排序号 =  \'" & p & "\' and 阶层 = \'"  & jc & "\')"
           tb.SaveExcel(dlg.FileName,tb.Rows(0)("名称"))
        Next
    End If
End If

Functions.Execute("打开导出文件" , dlg.FileName )

[此贴子已经被作者于2017/10/17 14:18:03编辑过]