以文本方式查看主题 - 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=49840) |
||||
-- 作者:yangwenghd -- 发布时间:2014/4/24 20:46:00 -- 帮忙看看导入Excel的时候出问题 为什么导入Excel的时候导入不进去啊 感谢
|
||||
-- 作者:有点甜 -- 发布时间:2014/4/24 20:55:00 -- 看了一下,你不能导入.csv格式的数据,你需要把数据转换成.xls格式的才能导入。 |
||||
-- 作者:有点甜 -- 发布时间:2014/4/24 21:00:00 -- 改了一下,如下
|
||||
-- 作者: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 错误所在事件: 详细错误信息: 字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据。 [此贴子已经被作者于2014-4-25 10:10:02编辑过]
|