Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:三尾狐 帖子:645 积分:4583 威望:0 精华:0 注册:2012/11/12 14:27:00
[求助]  发帖心情 Post By:2013/2/21 16:03:00 [只看该作者]

想把表格(多头表格)导出后写入数据,然后再导入时出现问题,表头被导入,且数据没有被导人。

     导出代码:

 

Dim dcb As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim tbl As Table = Tables(""& dcb.text &"")
Dim hdr As Integer = tbl.HeaderRows '获得表头的层数
Dim cnt As Integer
Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
tbl.CreateSheetHeader(Sheet) '生成表头
For c As Integer = 0 To tbl.Cols.Count - 1
    If tbl.Cols(c).Visible Then
        For r As Integer = 0 To tbl.Rows.Count - 1
            sheet(r + hdr,cnt).value = tbl(r,c)
        Next
        cnt = cnt + 1
    End If
Next
Book.Save("d:\记录表\test.xls")
Dim Proc As New Process
Proc.File = "d:\记录表\test.xls"
Proc.Start()

导入代码:Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls|2007Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    MessageBox.Show("你选择的是:" & dlg.FileName,"提示") '提示用户选择的文件
    Dim drb As WinForm.ComboBox = e.Form.Controls("ComboBox3")
    Dim sx1 As WinForm.ComboBox = e.Form.Controls("ComboBox5")
    Dim csxm1 As WinForm.ComboBox = e.Form.Controls("ComboBox7")
    DataTables(""& drb.text &"").DeleteFor("竞赛名称  like '*" & sx1.text & "*' And 参赛项目 like '*" & csxm1.text & "*'")
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" '指定格式
    mg.SourceTableName = "sheet1$"
    mg.DataTableName = ""& drb.text &""
    mg.Merge()
End  If

 

请专家指教!

 


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


加好友 发短信
等级:三尾狐 帖子:645 积分:4583 威望:0 精华:0 注册:2012/11/12 14:27:00
  发帖心情 Post By:2013/2/21 16:10:00 [只看该作者]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/21 16:12:00 [只看该作者]

 合并入狐表的时候是根据excel第一行的名字来合并的,但是这个时候,你的表头的名字和狐表列的名字已经是对不上了,空白是正常的。

 这种情况,你只能是手工导入数据:通过编写代码,一列一列、一行一行地对应地导入。


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


加好友 发短信
等级:三尾狐 帖子:645 积分:4583 威望:0 精华:0 注册:2012/11/12 14:27:00
  发帖心情 Post By:2013/2/21 16:13:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:8ldmp$$3d)wpnw3yn7o515.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/21 18:09:00 [只看该作者]

 只能是通过手工编码的方法导入了,因为对于这种多层表头的excel数据,狐表看来是没有操作意义的。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/2/21 19:05:00 [只看该作者]

编码导入,可以解决这个问题:

 

http://www.foxtable.com/help/topics/2334.htm

 

例如表头两行,只需将代码改为:

Dim Book As New XLS.Book("c:\test\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"产品","客户","雇员","单价","折扣","数量","日期"}
For n As Integer = 2 To Sheet.Rows.Count -1
    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()


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


加好友 发短信
等级:三尾狐 帖子:645 积分:4583 威望:0 精华:0 注册:2012/11/12 14:27:00
  发帖心情 Post By:2013/2/22 13:31:00 [只看该作者]

谢谢指教!!

再次请教:

1。能否只导入部分列。

2。目前已有7个不同的记录表需要导出并写入数据后导入,是否需要分别编写代码,有没有更好的方法。

3。在网络状态下加载表后,脱离网络后能否单机运行已加载的外部数据表并写入数据后保存,联网后数据能否直接进入外部数据表。


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/22 14:04:00 [只看该作者]

 1、部分列的话,就编入对应的列名就行了。

 2、如果要导入的列的格式和列名一致,就不需要分别编写代码。

 3、不能。如果要做的话,需要添加一个access临时数据库,还需要编写具体的代码去同步数据。

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


加好友 发短信
等级:三尾狐 帖子:645 积分:4583 威望:0 精华:0 注册:2012/11/12 14:27:00
  发帖心情 Post By:2013/2/22 14:37:00 [只看该作者]

谢谢!!!

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


加好友 发短信
等级:三尾狐 帖子:645 积分:4583 威望:0 精华:0 注册:2012/11/12 14:27:00
  发帖心情 Post By:2013/2/23 11:43:00 [只看该作者]

导入数据出现问题,请指教!!!

  代码:

   Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
    dlg.Filter= "Excel文件|*.xls|2007Excel文件|*.xls" '设置筛选器
    If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
        MessageBox.Show("你选择的是:" & dlg.FileName,"提示") '提示用户选择的文件
        Dim drb As WinForm.ComboBox = e.Form.Controls("ComboBox3")
        Dim sx1 As WinForm.ComboBox = e.Form.Controls("ComboBox5")
        Dim csxm1 As WinForm.ComboBox = e.Form.Controls("ComboBox7")
        DataTables(""& drb.text &"").DeleteFor("竞赛名称  like '*" & sx1.text & "*' And 参赛项目 like '*" & csxm1.text & "*'")
       
        If drb.text = "记录表A"  Then
            Dim Book As New XLS.Book(""& dlg.FileName &"")
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            Tables("记录表A").StopRedraw()
            Dim nms() As String = { "编号","姓名","中小学","学校","场地","成绩分数","成绩输入1","成绩输入2","成绩输入4","成绩输入5","奖项","参赛项目" }
           '在“成绩分数”之前有一列“成绩时间”为表达式列,被省略

        For n As Integer = 2 To Sheet.Rows.Count -2
                Dim r As Row = Tables("记录表A").AddNew()
                For m As Integer = 0 To nms.Length - 2
                    r(nms(m)) = Sheet(n,m).Value
                Next
            Next
            Tables("记录表A").ResumeRedraw()
        End If
       
       
       
    End  If


图片点击可在新窗口打开查看此主题相关图片如下:wv3j1sy7tpl_nvgc07s}~f.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

 

"成绩分数"列及后面所有的列都往后错排了?!!!

[此贴子已经被作者于2013-2-23 11:57:58编辑过]

 回到顶部
总数 17 1 2 下一页