Foxtable(狐表)用户栏目专家坐堂 → 【求助】 excel 时间列 导入到窗口表格式该如何处理


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

主题:【求助】 excel 时间列 导入到窗口表格式该如何处理

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


加好友 发短信
等级:三尾狐 帖子:700 积分:6224 威望:0 精华:0 注册:2018/5/10 9:05:00
【求助】 excel 时间列 导入到窗口表格式该如何处理  发帖心情 Post By:2020/3/23 20:04:00 [只看该作者]

请教
 excel 时间列 导入到窗口表格式该如何处理  目前excel 时间列 设置为1902/10/18 10:22:00 格式导入显示00:00

图片点击可在新窗口打开查看此主题相关图片如下:导入时间格式.png
图片点击可在新窗口打开查看

导入代码如下 导入数据除时间列 均正常
    Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
    dlg.Filter= "Excel文件|*.xls|Excel2007文件|*.xlsx" '设置筛选器
    If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
        
        Dim Book As New XLS.Book(dlg.FileName)
        'Dim Book As New XLS.Book("d:\data\1.xls")
        
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables("制度标准二级_Table1").StopRedraw()
        Forms("加载窗口").Show
        '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
        Dim nms() As String = {"频率","完成日期","备注"}
        '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim r As Row = Tables("制度标准二级_Table1").AddNew()
            For m As Integer = 0 To nms.Length - 1
                r(nms(m)) = Sheet(n,m).Value
            Next
        Next
        Tables("制度标准二级_Table1").ResumeRedraw()
        Tables("制度标准二级_Table1").Save
end if
[此贴子已经被作者于2020/3/23 20:17:09编辑过]

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


加好友 发短信
等级:三尾狐 帖子:700 积分:6224 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/3/23 20:17:00 [只看该作者]

目前excel 时间列 设置为1902/10/18 10:22:00 格式导入显示00:00

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


加好友 发短信
等级:三尾狐 帖子:700 积分:6224 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/3/23 20:24:00 [只看该作者]

避免沉贴 顶下

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/23 20:44:00 [只看该作者]

"备注"列就是这个完成时间列?什么列类型?有没有相关代码控制

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


加好友 发短信
等级:三尾狐 帖子:700 积分:6224 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/3/24 13:04:00 [只看该作者]

时间列是  【完成时间】

窗口打开代码 
DataTables(e.Form.Name & "_table1").DataCols("完成时间").SetDateTimeFormat(DateTimeFormatEnum.Time)

导入代码
导入代码如下 导入数据除时间列 均正常
    Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
    dlg.Filter= "Excel文件|*.xls|Excel2007文件|*.xlsx" '设置筛选器
    If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
        
        Dim Book As New XLS.Book(dlg.FileName)
        'Dim Book As New XLS.Book("d:\data\1.xls")
        
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables("制度标准二级_Table1").StopRedraw()
        Forms("加载窗口").Show
        '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
        Dim nms() As String = {"频率","完成日期","完成时间","备注"} '代码省略了些导入列 具体参考附件
        '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim r As Row = Tables("制度标准二级_Table1").AddNew()
            For m As Integer = 0 To nms.Length - 1
                r(nms(m)) = Sheet(n,m).Value
            Next
        Next
        Tables("制度标准二级_Table1").ResumeRedraw()
        Tables("制度标准二级_Table1").Save
end if

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:制度导入格式.xls


附件除【完成时间】列导入数据有问题 其他均无问题   数据库 SQL 数据类型 datetime
[此贴子已经被作者于2020/3/24 13:09:34编辑过]

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


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


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


加好友 发短信
等级:三尾狐 帖子:700 积分:6224 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/3/24 14:57:00 [只看该作者]

请教代码
   如何像这样   指定导入指定列呢  现在改了代码  有些列是没有必要导入的  导入会导致报错
        '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
        Dim nms() As String = {"频率","完成日期","完成时间","备注"} '代码省略了些导入列 具体参考附件
     
这下面是根据情况改写的导入代码  麻烦指导一下

Dim dlg As New OpenFileDialog
dlg.Filter= "所有文件|*.*|Excel2003文件|*.xls|Excel2007文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    
    MessageBox.Show("你选择的是:" & dlg.FileName,"提示")
    If MessageBox.Show("是否合并?","请确认!",MessageBoxButtons.OKCancel,MessageBoxIcon.Question) = DialogResult.OK Then
        DataTables("制度标准二级_Table1").StopRedraw
        
        Dim App As New MSExcel.Application
        try
            Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
            Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
            Dim Rg As MSExcel.Range = Ws.UsedRange
            Dim ary = rg.value
            For n As Integer = 2 To rg.Rows.Count
                Dim ro As Row = Tables("制度标准二级_Table1").AddNew
                For i As Integer = 0 To Tables("制度标准二级_Table1").Cols.Count - 1
                    ro(i) = ary(n,i+2)
                Next
            Next
            MessageBox.Show("导入成功!","恭喜!")
        catch ex As exception
            msgbox(ex.message)
            MessageBox.Show("导入失败!","请再试一遍!")
        finally
            DataTables("制度标准二级_Table1").ResumeRedraw
            app.quit
        End try
        
    Else
        Return
    End If
End If

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


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

Dim nms() As String = {"","频率","","完成日期","完成时间","备注"} 按顺序把不需要导入的列名置空,然后在代码里判断

            For n As Integer = 2 To rg.Rows.Count
                Dim ro As Row = Tables("制度标准二级_Table1").AddNew
                For i As Integer = 0 To nms.Length - 1
if nms(m) > ""
                    ro(nms(m)) = ary(n,i+2)
end if
                Next


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


加好友 发短信
等级:三尾狐 帖子:700 积分:6224 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/3/24 17:16:00 [只看该作者]

问题1
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.3.11.8
错误所在事件:
详细错误信息:
无法设置列“稽核频率”。此值违反了此列的 MaxLength 限制。

问题二  索引超出了数组界限
[此贴子已经被作者于2020/3/24 17:21:01编辑过]

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


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

1、列长度不够:http://www.foxtable.com/webhelp/topics/0036.htm

2、说明列顺序、数组顺序和execl里的列名顺序不一致,或者个数不对

 回到顶部