Foxtable(狐表)用户栏目专家坐堂 → [求助]怎样多文件导入


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

主题:[求助]怎样多文件导入

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
[求助]怎样多文件导入  发帖心情 Post By:2021/4/12 23:46:00 [显示全部帖子]

如何批量导入Excel表格  发帖心情 Post By:2020/4/8 8:47:00 [只看该作者]

工作中需要批量导入Excel表格,如何才能实现呢?谢谢


 发帖心情 Post By:2020/4/8 9:04:00 [只看该作者]

比如

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
dlg.MultiSelect=true
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    For each file as string in dlg.FileNames
Dim mg As New Merger
mg
.SourcePath = file
mg
.Format = "excel" '指定格式
mg
.SourceTableName = "订单" '指定要合并的表
mg
.DataTableName = "订单" '指定接收数据的表
mg
.Merge() '开始合并
    Next
End If


我这里提示错误:
.错误所在事件:
详细错误信息:
Microsoft Jet 数据库引擎找不到对象'订单'。请确定对象是否存在,并正确地写出它的名称和路径。
mg.SourceTableName = "订单" '指定要合并的表
这个是工作表的名称吗?


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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/4/12 23:47:00 [显示全部帖子]

顺便问下如何大量数据导入,一次性好几万。我翻遍了没找到那个帖子

[原创]使用OpenXml导入导出Excel2007格式的文件,支持100W行上百M的大文件  图片点击可在新窗口打开查看 Post By:2017/5/9 15:11:00 [只看该作者]

[总结分享]sqlBulkCopy批量插入大量数据 (批量导入、快速导入、1秒1w行)  图片点击可在新窗口打开查看 Post By:2020/3/13 11:56:00 [只看该作者]
[此贴子已经被作者于2021/4/12 23:53:40编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/4/13 17:35:00 [显示全部帖子]

我的表格里面的工作表是Sheet1
mg.SourceTableName = "Sheet1" '指定要合并的表
还是错误

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/4/13 18:13:00 [显示全部帖子]

有没有比导入速度更快的?跟高速合并一样快,但代码又简单,楼上那种能导十几万,但是太复杂了。(我用的是窗口表)

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/4/15 15:43:00 [显示全部帖子]

Dim dt As DataTable = DataTables("Sheet1") '修改为你的表
Dim conStr As String = "server=s***p,16131;uid=**;pwd=z***6;database=A***透" '改为自己数据库的连接字符串,注意跟狐表的数据库字符串不同,不能拿来用
Dim tran As System.Data.SqlClient.SqlTransaction
Dim conn As new System.Data.SqlClient.SqlConnection(conStr)

Try
    Dim st As Date = Date.Now '计算耗时
    conn.Open() '打开链接
    tran = conn.BeginTransaction()'开始事务
    Dim mpList As new List(of System.Data.SqlClient.SqlBulkCopyColumnMapping)
    '配置本地来源列与服务器目标列的配对关系,第一个参数是"来源列",第二个是"目标列"
    For Each dc As DataCol In dt.DataCols
        mpList.Add( new System.Data.SqlClient.SqlBulkCopyColumnMapping(dc.Name, dc.Name))
    Next
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    '把刚才的匹配关系,导进去SqlBulkCopy的参数里
    For Each mp As System.Data.SqlClient.SqlBulkCopyColumnMapping In mpList
        Copy.ColumnMappings.Add(mp)
    Next
    copy.Destinati '指定服务器上目标表的名称
    copy.BulkCopyTimeout=30 '默认30秒超时
    copy.BatchSize = CInt(dt.DataRows.Count/10) '每批事务插入的数据量,推荐插入的总行数/10,性能最佳
    copy.WriteToServer(dt.basetable)  '你的本地DataTable,要转成.net官方的基表类型
    tran.Commit()
    
    Dim res As Double = Format(dt.DataRows.Count /10000,"0.00")
    MessageBox.Show("批量插入成功, " & res & "W行 耗时: " & (Date.Now - st).TotalSeconds & "秒")
Catch ex As exception
    tran.Rollback()    '返回False 执行失败!
    MessageBox.Show("批量插入失败,原因:" & ex.message)
Finally
    conn.Close() '必须关闭,否则内存会一直泄露
End Try


我的两个表不一样,要怎么改才能导入?


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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/4/15 19:03:00 [显示全部帖子]

算是搞定了,但是这个导入数据发布项目之后就出错该怎么处理?
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:自定义函数,AppendFromExecl
详细错误信息:
调用的目标发生了异常。
未能加载文件或程序集“DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
[此贴子已经被作者于2021/4/15 19:03:27编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/4/18 16:11:00 [显示全部帖子]

怎么用代码获取表格第一个工作表名称?

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/5/10 14:27:00 [显示全部帖子]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,大数据导入,数据上传,Click
详细错误信息:
未将对象引用设置到对象的实例。


我上传数据弹出这样的提示是什么问题?
这个例子里面的
以下是代码,好像打印出1,后面就出错了。之前也是这代码导入的数据。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:代码.txt





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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/5/10 15:11:00 [显示全部帖子]

哦哦,找到原因了。

 回到顶部