Foxtable(狐表)用户栏目专家坐堂 → 如何将excel表格的数据自动导入数据表


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

主题:如何将excel表格的数据自动导入数据表

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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
如何将excel表格的数据自动导入数据表  发帖心情 Post By:2019/3/30 8:21:00 [只看该作者]

我有一个excel表格(名称为“领料表”),里面有数据列“物料代号”和“领料数量”;再有一个数据表“批号表”,里面有数据列“产品代号”和“出库数量”。我在“菜单设计”那里建立了一个按钮,我希望按一下这个按钮,就可以将excel 表格“领料表”与数据表“批号表”进行比较,凡是“物料代号”=“产品代号”的,就将“领料数量”填入“出库数量”(代替掉旧的“出库数量”)。如果数据表“批号表”里面不存在某个“物料代号”,就要增加一行,将“物料代号”和“领料数量”输入到数据表的“产品代号”和“出库数量”。请教这个代码如何写。谢谢。

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/30 9:04:00 [只看该作者]


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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By: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 = {"piao号","订单号","制造产品号","材料","物料号","开料参数","大小弯","数量","开料mm","开料inch","开料数量"}
       For n As Integer = 1 To Sheet.Rows.Count -1 
           Dim r As Row = Tables("直身开料单").AddNew()
           r("生产piao号") = nms("piao号")
           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("生产piao号") = nms("piao号") 这样的代码,请帮我看看上面的代码是否有问题。要怎样修改?谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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 = {"piao号","订单号","制造产品号","材料","物料号","开料参数","大小弯","数量","开料mm","开料inch","开料数量"}
       For n As Integer = 1 To Sheet.Rows.Count -1
           Dim r As Row = Tables("直身开料单").AddNew()
           r("生产piao号") = sheet(n, 0).text
           r("订单号") = sheet(n, 1).text
           r("制造产品号") = sheet(n, 2).text

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


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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/4/4 17:00:00 [只看该作者]

按照你的方法修改了代码,但还是执行不了,没有任何反映,没有任何警告。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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("生产piao号") = sheet(n, 0).text
    r("订单号") = sheet(n, 1).text
    r("制造产品号") = sheet(n, 2).text
Next
Tables("直身开料单").ResumeRedraw()


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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/4/7 14:06:00 [只看该作者]

上述代码可以了。
还有一个问题,excel表格里面的一串字符串,如果其第一个字符是空格的话,那么我仅希望去掉第一个空格(后面的空格要保留下来)。代码该如何写?谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 14:49:00 [只看该作者]


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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By: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("生产piao号") = 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
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/8 12:10:00 [只看该作者]

无法远程打开excel文件的。只能在本地电脑打开foxtable项目,然后再引用本地的excel文件。

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