以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]我需要导入3万条数据,如何快速导入?Excel标题开头为数字  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=112792)

--  作者:jjjeyes
--  发布时间:2018/1/3 1:52:00
--  [求助]我需要导入3万条数据,如何快速导入?Excel标题开头为数字
1、我需要导入3万条数据,如何快速导入?
使用以下代码快些吗?
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ip As New Importer
    ip.SourcePath = dlg.FileName \'指定数据文件
    ip.SourceTableName = "原始数据" \'指定要导入的表
    ip.NewTableName = "原始数据1" \'导入后的表名
    ip.Import()
End If
可是每次导入时会出现错误提示:
.NET Framework 版本:2.0.50727.8794
Foxtable 版本:2017.12.18.1
错误所在事件:
详细错误信息:
未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。
求解,如何解决!



2、我也试用过“数据合并”的方式,可是效率比较低!

被导入的Excel文件中有很多列,如:学号、班级、姓名、民族等,但是有两列为数字开头分别为“50米”和“800米”。因为这个Excel是在原文件内下载的,所以不可修改标题行。
如果使用“数据合并”的方式,Excel有一列为“50米”,我希望导入到foxtable中列名为“短跑”,标题为“50米”的列中。
可是列名不一样导入不了啊!求解!

--  作者:有点甜
--  发布时间:2018/1/3 9:21:00
--  

1、

 

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ip As New Importer
    ip.format = "Excel"
    ip.SourcePath = dlg.FileName \'指定数据文件
    ip.SourceTableName = "原始数据$" \'指定要导入的表
    ip.NewTableName = "原始数据1" \'导入后的表名
    ip.Import()
End If

 

安装一下这个 http://www.foxtable.com/download/AccessDatabaseEngine.exe

 

2、参考 http://www.foxtable.com/webhelp/scr/0685.htm

 

你可以设置 fieldMaps

 

FieldMaps
这是一个集合,要合并的表和接收数据的表的字段名称存在不一致的情况下,可以用此集合指定两个表之间字段的对应关系。
假定要合并的表中某一字段的名称为“ID”,合并的时候,需要将该列的内容合并到接收表中的"编号"列,可以设置代码:
Dim mg As New Merger
mg.FieldMaps.Add("ID","编号")


--  作者:jjjeyes
--  发布时间:2018/1/3 12:46:00
--  
使用导入的方法:
修改了代码,安装了软件。运行后还是出错:
SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。

求解!
[此贴子已经被作者于2018/1/3 12:47:01编辑过]

--  作者:有点甜
--  发布时间:2018/1/3 15:49:00
--  

红色代码写错

 

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ip As New Importer
    ip.format = "Excel"
    ip.SourcePath = dlg.FileName \'指定数据文件
    ip.SourceTableName = "sheet1$" \'指定要导入的表
    ip.NewTableName = "原始数据1" \'导入后的表名
    ip.Import()
End If


--  作者:jjjeyes
--  发布时间:2018/1/3 18:19:00
--  
这才发现导入表后是在foxtable中新建了一个表,而合并数据才是在原来表中进行修改和添加!
--  作者:有点甜
--  发布时间:2018/1/3 22:01:00
--  
以下是引用jjjeyes在2018/1/3 18:19:00的发言:
这才发现导入表后是在foxtable中新建了一个表,而合并数据才是在原来表中进行修改和添加!

 

是的,merger的代码和4楼差不多的,改一下即可。