以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何将excel表格的数据自动导入数据表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132803)

--  作者:edisontsui
--  发布时间:2019/3/30 8:21:00
--  如何将excel表格的数据自动导入数据表
我有一个excel表格(名称为“领料表”),里面有数据列“物料代号”和“领料数量”;再有一个数据表“批号表”,里面有数据列“产品代号”和“出库数量”。我在“菜单设计”那里建立了一个按钮,我希望按一下这个按钮,就可以将excel 表格“领料表”与数据表“批号表”进行比较,凡是“物料代号”=“产品代号”的,就将“领料数量”填入“出库数量”(代替掉旧的“出库数量”)。如果数据表“批号表”里面不存在某个“物料代号”,就要增加一行,将“物料代号”和“领料数量”输入到数据表的“产品代号”和“出库数量”。请教这个代码如何写。谢谢。
--  作者:有点蓝
--  发布时间:2019/3/30 9:04:00
--  
参考:http://www.foxtable.com/webhelp/scr/2334.htm
--  作者:edisontsui
--  发布时间:2019/4/4 16:30:00
--  
If User.Group = "营销" Or User.name = "开发者"
   If CurrentTable.name.contains("直身开料单")
       Dim Book As New XLS.Book("c:\\开料任务单.xls")
       Dim Sheet As XLS.Sheet = Book.Sheets(1)
       Tables("直身开料单").StopRedraw()
       Dim nms() As String = {"票号","订单号","制造产品号","材料","物料号","开料参数","大小弯","数量","开料mm","开料inch","开料数量"}
       For n As Integer = 1 To Sheet.Rows.Count -1 
           Dim r As Row = Tables("直身开料单").AddNew()
           r("生产票号") = nms("票号")
           r("订单号") = nms("订单号")
           r("制造产品号") = nms("制造产品号")
           r("原材料") = nms("材料")
           r("型号") = nms("物料号")
           r("开料参数") = nms("开料参数")
           r("标识") = nms("大小弯")
           r("套数") = nms("数量")
           r("毫米") = nms("开料mm")
           r("长度") = nms("开料inch")
           r("数量") = nms("开料数量")
       Next
       Tables("直身开料单").ResumeRedraw()
    End If
End If

因为数据表"直身开料单"的数列标题与excel表格"开料任务单"的数据列标题是不同的,所以我需要用到类似 r("生产票号") = nms("票号") 这样的代码,请帮我看看上面的代码是否有问题。要怎样修改?谢谢。

--  作者:有点甜
--  发布时间:2019/4/4 16:38:00
--  

代码改成这样

 

If User.Group = "营销" Or User.name = "开发者"
   If CurrentTable.name.contains("直身开料单")
       Dim Book As New XLS.Book("c:\\开料任务单.xls")
       Dim Sheet As XLS.Sheet = Book.Sheets(1)
       Tables("直身开料单").StopRedraw()
       Dim nms() As String = {"票号","订单号","制造产品号","材料","物料号","开料参数","大小弯","数量","开料mm","开料inch","开料数量"}
       For n As Integer = 1 To Sheet.Rows.Count -1
           Dim r As Row = Tables("直身开料单").AddNew()
           r("生产票号") = sheet(n, 0).text
           r("订单号") = sheet(n, 1).text
           r("制造产品号") = sheet(n, 2).text

       Next
       Tables("直身开料单").ResumeRedraw()
    End If
End If


--  作者:edisontsui
--  发布时间:2019/4/4 17:00:00
--  
按照你的方法修改了代码,但还是执行不了,没有任何反映,没有任何警告。
--  作者:有点甜
--  发布时间:2019/4/4 17:50:00
--  

那试试改成这样测试


Dim Book As New XLS.Book("c:\\开料任务单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("直身开料单").StopRedraw()
For n As Integer = 1 To Sheet.Rows.Count -1
    msgbox(sheet(n, 0).text)
    Dim r As Row = Tables("直身开料单").AddNew()
    r("生产票号") = sheet(n, 0).text
    r("订单号") = sheet(n, 1).text
    r("制造产品号") = sheet(n, 2).text
Next
Tables("直身开料单").ResumeRedraw()


--  作者:edisontsui
--  发布时间:2019/4/7 14:06:00
--  
上述代码可以了。
还有一个问题,excel表格里面的一串字符串,如果其第一个字符是空格的话,那么我仅希望去掉第一个空格(后面的空格要保留下来)。代码该如何写?谢谢。

--  作者:有点甜
--  发布时间:2019/4/7 14:49:00
--  

这个意思?参考

 

http://www.foxtable.com/webhelp/scr/0233.htm

 

http://www.foxtable.com/webhelp/scr/0240.htm

 


--  作者:edisontsui
--  发布时间:2019/4/8 10:06:00
--  
去掉第一个空格的问题解决了。谢谢。
还有一个问题,我的excel表格output.xls是保存在客户的电脑上的,我们远程登录了客户的电脑,所以我需要将代码修改成如下:

Dim Book As New XLS.Book("osdisk(c:)\\users\\sesa99355\\desktop\\output.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("直身开料单").StopRedraw()
For n As Integer = 1 To Sheet.Rows.Count -1
    msgbox(sheet(n, 0).text)
    Dim r As Row = Tables("直身开料单").AddNew()
    r("生产票号") = sheet(n, 0).text
    r("订单号") = sheet(n, 1).text
    r("制造产品号") = sheet(n, 2).text
Next
Tables("直身开料单").ResumeRedraw()

这样的修改有效吗?再者,这个excel表格的sheet名字是output,还需要修改哪里的代码吗?请参考下图。

图片点击可在新窗口打开查看此主题相关图片如下:clip(04-08-09-53-38).png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2019/4/8 12:10:00
--  
无法远程打开excel文件的。只能在本地电脑打开foxtable项目,然后再引用本地的excel文件。