以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  帮忙看看导入Excel的时候出问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=49840)

--  作者:yangwenghd
--  发布时间:2014/4/24 20:46:00
--  帮忙看看导入Excel的时候出问题
为什么导入Excel的时候导入不进去啊 感谢 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:桌面.zip


--  作者:有点甜
--  发布时间:2014/4/24 20:55:00
--  
 看了一下,你不能导入.csv格式的数据,你需要把数据转换成.xls格式的才能导入。
--  作者:有点甜
--  发布时间:2014/4/24 21:00:00
--  

 改了一下,如下

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入excel.table


--  作者:yangwenghd
--  发布时间:2014/4/24 21:09:00
--  
不能直接导入吗?嘿嘿 !
那一段是设置他们对应的列啊
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls|Excel文件|*.csv" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    e.Sender.Text = "导入中"
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    CurrentTable.StopRedraw()
    \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
    Dim nms() As String = {"第一列","第二列","第三列","第四列","第五列","第六列","第八列","第九列"}
    Application.DoEvents
    Dim cmd As new sqlcommand
    cmd.commandtext = "Select distinct 第一列,第二列 from {表A}"
    Dim dt As DataTable =  cmd.ExecuteReader
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = "第一列 =\'" & sheet(n,0).Text & "\' and 第二列 = \'" & sheet(n,1).Text & "\'"
        If dt.Find(bh) Is Nothing Then 
            Dim r As Row = Tables("表A").AddNew() 
            For m As Integer = 0 To nms.Length - 1
                r(nms(m)) = sheet(n,m).Value
            Next
        End If
    Next
    e.Sender.Text = "导入"   
    CurrentTable.DataTable.Save
    CurrentTable.ResumeRedraw() 
End If
[此贴子已经被作者于2014-4-24 21:12:48编辑过]

--  作者:yangwenghd
--  发布时间:2014/4/24 21:28:00
--  
能帮我看看吗?实在是有点头疼 为什么不需要的也导入进去了啊 比如第一行,还有就是某些列,那一段是写他们对应的行和列啊
--  作者:有点甜
--  发布时间:2014/4/24 21:32:00
--  

帮你分析一下。

 

\'下面写表a的列名,要对应excel的A、B、C列

Dim nms() As String = {"第一列","第二列","第三列","第四列","第五列","第六列","第八列","第九列"}

 

--------------------------------------

 

\'唯一值判断,意思是 第一列、第二列 标注这一行数据的唯一(为的是不导入重复数据)

cmd.commandtext = "Select distinct 第一列,第二列 from {表A}"

 

-------------------------------------

 

\'也是为了判断唯一,不重复导入

Dim bh As String = "第一列 =\'" & sheet(n,0).Text & "\' and 第二列 = \'" & sheet(n,1).Text & "\'"

 


--  作者:yangwenghd
--  发布时间:2014/4/24 21:40:00
--  
如果Excel B列不导入 能跳过了  ,或者只是导入一般的列,并且他们的位置不同,可以设置为A列指定导入某列和B C 列不导入,从第几行导入吗?
感谢 感谢 感谢

--  作者:yangwenghd
--  发布时间:2014/4/24 22:08:00
--  
甜兄弟 能帮我改一下吗? 
--  作者:有点甜
--  发布时间:2014/4/24 22:15:00
--  

 可以,下面这一段代码,不导入C、D、F列数据,从第4行开始导入

 

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls|Excel文件|*.csv" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    e.Sender.Text = "导入中"
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    CurrentTable.StopRedraw()
    \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
    Dim nms() As String = {"第一列","第二列","","","第五列","","第八列","第九列"}
    Application.DoEvents
    Dim cmd As new sqlcommand
    cmd.commandtext = "Select distinct 第一列,第二列 from {表A}"
    Dim dt As DataTable =  cmd.ExecuteReader
    For n As Integer = 3 To Sheet.Rows.Count -1
        Dim bh As String = "第一列 =\'" & sheet(n,0).Text & "\' and 第二列 = \'" & sheet(n,1).Text & "\'"
        If dt.Find(bh) Is Nothing Then 
            Dim r As Row = Tables("表A").AddNew() 
            For m As Integer = 0 To nms.Length - 1
                If nms(m) > "" Then
                    r(nms(m)) = sheet(n,m).Value
                End If
            Next
        End If
    Next
    e.Sender.Text = "导入"   
    CurrentTable.DataTable.Save
    CurrentTable.ResumeRedraw() 
End If

--  作者:yangwenghd
--  发布时间:2014/4/24 22:39:00
--  
导入第二次的时候就出问题了
未将对象引用设置到对象的实例。
为什么有些能导入 有些不能导入呢!
 还有一个问题 感谢  :
.NET Framework 版本:2.0.50727.5477
Foxtable 版本:2014.3.8.1
错误所在事件:
详细错误信息:
字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:desktop.zip


[此贴子已经被作者于2014-4-25 10:10:02编辑过]