设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: 123shusheng
打印 上一主题 下一主题

[表] 再谈批量导入CSV文件

[复制链接]
21#
发表于 2013-5-10 17:38:05 | 只看该作者
efcndi 发表于 2013-5-9 08:11
看了这个例子 得到很多启发 谢谢了 但是有个疑问 如果需要导入的数据改成“01.002.01h
”为什么导入后变成 ...

数据改成“01.002.01h”,是文件名改成,还是csv文件中的内容改成改成“01.002.01h
”导入后变成了“3.001”??
22#
发表于 2013-5-10 18:01:24 | 只看该作者
是csv文件中的内容改成改成“01.002.01h”,导入后变成了“1.002”
23#
发表于 2013-5-10 18:01:53 | 只看该作者
本帖最后由 aslxt 于 2013-5-10 18:22 编辑

具体原因有待勘察,实际上很多数据都有问题,甚至会出现乱码(某个字段),直接用查询可以得出这种现象:
SELECT *
FROM [TEXT;FMT=CSV;DELIMITED;HDR=YES;DATABASE=文件路径名].[ 含后缀的文件名]
例如:
源字段值                          查询得到的值
1.008.09更改                   ¥1
1.002.09h                        ¥1  
1.00好.09h                     # 错误
24#
发表于 2013-5-10 18:30:42 | 只看该作者

查询结果

源数据

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
25#
发表于 2013-5-10 19:28:48 | 只看该作者
本帖最后由 aslxt 于 2013-5-10 19:34 编辑

目前只能用逐行读取文本文件的方式可以保存数据的原样,参考代码如下:
Private Sub Command0_Click()
     Dim varItem As Variant
    With Application.FileDialog(3) 'msoFileDialogFilePicker
      .AllowMultiSelect = True       '允许选择多个文件
      .Filters.Clear
      .Filters.Add "CSV Files", "*.CSV"        '只显示CSV文件,可根据需要改变
      If .Show Then
        For Each varItem In .SelectedItems
          DR varItem
        Next
      End If
    End With
End Sub

Function DR(ByVal MYspath As String)
    Dim SQL, STR
    Dim i As Long
    Dim A
    Close #1
    i = 0
    Open MYspath For Input As #1
        Do While Not EOF(1)
            Line Input #1, STR    '   逐行读入
            i = i + 1
            A = Split(STR, ",") '这里不允许csv文件的数据设为千分位,文本字符间不能有半角逗号
            If i > 1 Then
                SQL = "INSERT INTO tbl_Export ( [VENDOR NO], [CUSTOMER NO], [INVOICE NO], [BL DATE], [MODEL NO], QTY, PRICE, AMOUNT ) VALUES (" & _
                      """" & A(0) & """" & "," & """" & A(1) & """" & ", " & """" & A(2) & """" & ", " & "#" & A(3) & "#" & "," & """" & A(4) & """" & ", " & A(5) & ", " & A(6) & ", " & A(7) & " )"
                Debug.Print SQL
                CurrentProject.Connection.Execute SQL
            End If
        Loop
    Close #1
End Function
26#
发表于 2013-5-10 19:35:56 | 只看该作者
当然“SQL=....” 的语法要根据自己的表重新改过,才能实际运用
27#
发表于 2013-5-12 10:02:02 | 只看该作者
aslxt 发表于 2013-5-10 19:35
当然“SQL=....” 的语法要根据自己的表重新改过,才能实际运用

谢谢 太厉害了 好好学习中
28#
发表于 2013-5-12 10:46:29 | 只看该作者
aslxt 发表于 2013-5-10 19:35
当然“SQL=....” 的语法要根据自己的表重新改过,才能实际运用

再次感谢aslxt 可是我用您逐行读取的方式试了一下,问题还是没解决,还是会变成“1.002”之类的数据.
29#
发表于 2013-5-12 10:48:49 | 只看该作者
本帖最后由 aslxt 于 2013-5-12 10:54 编辑

把你的实例贴上来(access【2007版本及以下】和csv文件)
或加我qq:853156456
30#
发表于 2013-5-12 11:03:25 | 只看该作者
您稍等,我需要处理一下,有数据不能公开,我立刻处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-16 23:58 , Processed in 0.080638 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表