以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教一个日期时间的导入问题!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65686)

--  作者:Bin
--  发布时间:2015/3/20 15:30:00
--  
编码合并吧


--  作者:Bin
--  发布时间:2015/3/20 15:31:00
--  
上例子,有代码控制岂有不行之理
--  作者:有点甜
--  发布时间:2015/3/20 16:04:00
--  

 foxtable去excel时间是有问题的,要用vba去处理才行

 

 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("表A").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
            For n As Integer = 2 To rg.Rows.Count
                Dim ro As Row = Tables("表A").AddNew
                For i As Integer = 0 To Tables("表A").Cols.Count - 1
                    ro(i) = ws.Cells(n,i+2).Text
                Next
            Next
        catch ex As exception
            msgbox(ex.message)
        finally
            DataTables("表A").ResumeRedraw
            app.quit
        End try
       
    Else
        Return
    End If
End If
MessageBox.Show("导入成功!","恭喜!")


--  作者:有点甜
--  发布时间:2015/3/20 16:45:00
--  

换一下,用二维数组导入会快

 

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("表A").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("表A").AddNew
                For i As Integer = 0 To Tables("表A").Cols.Count - 1
                    ro(i) = ary(n,i+2)
                Next
            Next
            MessageBox.Show("导入成功!","恭喜!")
        catch ex As exception
            msgbox(ex.message)
            MessageBox.Show("导入失败!","恭喜!")
        finally
            DataTables("表A").ResumeRedraw
            app.quit
        End try
       
    Else
        Return
    End If
End If


--  作者:yinyb36
--  发布时间:2016/4/3 15:59:00
--  
运行
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
出错:
.NET Framework 版本:2.0.50727.8670
Foxtable 版本:2016.3.27.1
错误所在事件:窗口,Excel导入,Btn导入数据,Click
详细错误信息:
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 800702e4。


--  作者:大红袍
--  发布时间:2016/4/3 17:14:00
--  

回复9楼,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=54396&replyID=360697&skin=1


--  作者:chen3728060
--  发布时间:2017/8/23 22:51:00
--  

有新人会看这个贴然后很迷茫,看不懂,我重新给一个简单的

 


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170823225121.png
图片点击可在新窗口打开查看

 

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xlsx; *.xls" \'设置筛选器
Dim dr As DataRow
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
   
    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 = 1 To rg.Rows.Count
            output.show(ary(n,1) & "," & ary(n,2) & "," & ary(n,3) & "," & ary(n,4))
        Next
        \'重点看这里,自己根据表格位置调整导入把---
       
        MessageBox.Show("导入成功!","恭喜!")
    catch ex As exception
        msgbox(ex.message)
        MessageBox.Show("导入失败!","恭喜!")
    finally
        app.quit
    End try
End If

 

 

思路关键就是获取完整个excel表格后,知道 ary(1,1)代表 单元格(1,1),剩下就是自己遍历去塞

 

--  作者:jackchan120925
--  发布时间:2017/8/24 21:50:00
--  
中间的代码 Dim ary = rg.value ary不用申明类型么?
--  作者:jackchan120925
--  发布时间:2017/8/24 22:23:00
--  
Dim ary = rg.value 请问这段代码,不用申明类型吗?dim ary也不是申明数组的格式呀?
--  作者:有点色
--  发布时间:2017/8/24 22:48:00
--  
以下是引用jackchan120925在2017/8/24 21:50:00的发言:
中间的代码 Dim ary = rg.value ary不用申明类型么?

 

不声明,就是object类型。