读书人

VB读取csv文件有关问题

发布时间: 2012-01-21 21:31:43 作者: rapoo

VB读取csv文件问题
用VB读取CSV文件并插入Access数据库
1.在CSV文件的最后一行有一个简单校验:END+文件明细条数。用来判断文件明细是否正确。那我应该怎么判断文件明细是正确的呢?
2.读取CSV文件时,如果文件里有 ","(逗号)该如何处理?
3.在将文件写入数据库时,如何避免将最后的 简单校验 也写入数据库?

希望高人能给出具体代码,本人对VB不熟悉。以前一直做C#的。

[解决办法]
1)原始的 CSV 放一个目录,然后再开一个目录放置处理后的 CSV。
用下面的代码进行 CSV 文件的复制,同时进行校验。

VB code
Public Function CopyAndCheck(ByVal SourceFile As String, _                             ByVal TargetFile As String _                            ) As Boolean    Dim bCheckResult As Boolean    Dim hSource As Integer    Dim hTarget As Integer    Dim sLine As String    Dim lCount As Long        hSource = FreeFile()    Open SourceFile For Input Access Read As #hSource        hTarget = FreeFile()    Open TargetFile For Output Access Write As #hTarget        Do While Not EOF(hSource)        Line Input #hSource, sLine                If sLine Like "END*" Then            bCheckResult = (Val(Mid$(sLine, 4)) = lCount)            Exit Do        Else            Print #hTarget, sLine        End If    Loop        Close #hSource    Close #hTarget        CopyAndCheck = bCheckResultEnd Function
[解决办法]
如果只是避免“,”号,则可以改变FMT=Delimited语句,但无法判断最后汇总行,如果汇总行字段数与明细行不一致,则自己读取后插入。
[解决办法]
建议去看看visdata(自带的例子),关于txt的操作很详细...
[解决办法]
楼主两天没说话了:)
[解决办法]
文件的数据结构决定效率。

我认为你的校验信息不要写在 CSV 文件中。

你可以在同一目录下写一个 check.ini 文件:

[yourfilename.csv]
check = <文件明细条数>

这样,.csv 中整齐划一的记录格式就便于将其当作 Jet Engine 的外部数据库来处理。一个 SQL 语句就可以搞定导入。

同时,如果你用的是带有 AffectedRecords 参数的 Execute 方法,就可以直接得到导入的记录数。与ini文件中的比较即可。

如果你使用了事务,这时就可以提交或回滚。


读书人网 >VB

热点推荐