以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]导入excel某些列出错。 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=84728) |
-- 作者:huhu -- 发布时间:2016/5/9 11:22:00 -- [求助]导入excel某些列出错。 msgbox(11)-----------弹出了11 Dim Book As New XLS.Book("D:\\计划.xls") msgbox(12)----没有弹出12,却爆出了未将对象引用设置到对象的实例。这是怎么回事?最起码也应该弹出12吧。 Dim Sheet As XLS.Sheet = Book.Sheets(0) msgbox(13) Tables("计划表").StopRedraw() \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 msgbox(0) Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","部门名称","开工日期","完工日期","生产订单数量","入库数量","完成数量","产品批次","工单状态","订单号","订单行号","客户","备注","软件版本","料况追踪","基板","周需求交期","合同约定交期","生产反馈","修改标记"} \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 For n As Integer = 1 To Sheet.Rows.Count -1 Dim scddhm As String = sheet(n,1).Text Dim gdhh As String = sheet(n,2).text msgbox(1) If DataTables("计划表").Find("生产订单号码 = \'" & scddhm & "\' and 工单行号 = \'" & gdhh & "\'") Is Nothing Then \'如果不存在同编号的计划表 Dim r As Row = Tables("计划表").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = Sheet(n,m).Value Next End If Next Tables("计划表").ResumeRedraw() Tables("计划表").save msgbox("导入完成")
|
-- 作者:大红袍 -- 发布时间:2016/5/9 11:31:00 -- 不,可,能。上传你excel文件测试一下。
或者,你换一个文件或换一台电脑测试。 |
-- 作者:huhu -- 发布时间:2016/5/9 11:36:00 -- 我觉得也是不可能的啊。 这是execl。
|
-- 作者:大红袍 -- 发布时间:2016/5/9 11:54:00 -- 你excel文件有问题,你要打开后保存一次。 |
-- 作者:大红袍 -- 发布时间:2016/5/9 11:55:00 -- 或者是用vba打开
msgbox(11) |
-- 作者:huhu -- 发布时间:2016/5/9 12:00:00 -- 是另存为execl文件?这么做了还是报同样的错 |
-- 作者:大红袍 -- 发布时间:2016/5/9 12:01:00 -- 打开保存一下,看4、5楼,我测试没问题 |
-- 作者:huhu -- 发布时间:2016/5/9 12:04:00 -- msgbox(11) Dim App As New MSExcel.Application App.Visible = True Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\\计划.xls") msgbox(12) 采用这样的话,提示未申明sheet。
|
-- 作者:大红袍 -- 发布时间:2016/5/9 12:05:00 -- 参考
http://www.foxtable.com/help/topics/2121.htm
|
-- 作者:huhu -- 发布时间:2016/5/9 15:13:00 -- 这么写对不对? Dim App As New MSExcel.Application App.Visible = True Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\\计划-0506.xls") Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1) Tables("计划表").StopRedraw() \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 msgbox(0) Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","部门名称","开工日期","完工日期","生产订单数量","入库数量","完成数量","产品批次","工单状态","订单号","订单行号","客户","备注","软件版本","料况追踪","基板","周需求交期","合同约定交期","生产反馈","修改标记"} \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 For n As Integer = 1 To ws.Rows.Count -1 Dim scddhm As String = ws.range(n,1).Text Dim gdhh As String = ws.range(n,2).text msgbox(1) If DataTables("计划表").Find("生产订单号码 = \'" & scddhm & "\' and 工单行号 = \'" & gdhh & "\'") Is Nothing Then \'如果不存在同编号的计划表 Dim r As Row = Tables("计划表").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = ws.range(n,m).Value Next End If Next Tables("计划表").ResumeRedraw() Tables("计划表").save msgbox("导入完成")
|