好文档 - 专业文书写作范文服务资料分享网站

CSV文件操作

天下 分享 时间: 加入收藏 我要投稿 点赞

VB6.0 CSV文件操作2008-05-27 18:04

功能:读取CSV文件的内容并导入到数据库中

环境:Access2003 语言:VBA(对于使用VB6.0同样适用)

数据库:D:\\db1.mdb 数据表:test userId 数值型 userName 文本型

CSV文件:D:\\test.csv (使用Excel打开) 编号 姓名 123 王五 456 李\“四 789 张'三

注意,在实际处理CSV文件前,程序开发者必须了解CSV文件的真实结构。 为了说明在处理CSV文件时可能遇到的特殊情况,用于测试的CSV文件的 最后两行的“姓名”列均插入了特殊字符。

由于在显示CSV文件内容时,Excel已经对CSV文件进行了处理,因此, 上面使用Excel所看到的内容并不是CSV的真实内容。 如果使用文本编辑器打开,可以看到真实的内容为: ----------

编号, 姓名 123, 王五

456, \李\“四\789, 张'三 ----------

之所以出现这样的内容,是因为我们通常使用Excel编辑CSV文件,然后

使用另存为命令保存为CSV文件。这一过程中,Excel会隐蔽地进行如下处理: 1

CSV文件将Excel的同一行中不同单元格的内容使用,(半角逗号分隔开)

2 当内容中出现半角双引号时会自动被转义为两个双引号,即 \;

同时内容整体的两端自动被双引号引起来。例如:李\“四 -> \李\“四\

了解了数据表和CSV文件的结构,下面就可以编写代码了。 ------------------------------------------------------------ 1. Option Compare Binary 声明

作用:声明当前VB环境中字符串的比较方式

这里的 Binary 声明当前VB环境中的字符串依照其在内存中的字节码来进行比较

如果你使用的是普通VB6.0环境,默认的字符串比较就是依照字节码比较 但是,如果你使用的是Access VBA进行开发,就要特别注意了。

Access VBA开发时会在全部代码之前默认追加声明:Option Compare Database 也就是说,Access VBA默认依照Access数据库中存储的比较规则进行字符串比较 所以,普通VB6.0开发环境与Access VBA开发环境的默认字符串比较方式不同。 VB6.0的默认字符串比较方式是Binary,

Access VBA的默认字符串比较方式是Database。

注意:Database比较方式对全角和半角不敏感。例如,“,”, 与 \在Database方式下将被视为相等

所以,如果你的程序使用Access VBA开发,同时又要进行全角与半角的比较时

应当使用Binary比较方式,而不是接受Access VBA的默认设置,即你的程序的首行必须是: Option Compare Binary

2.全部代码如下:

'声明当前VB环境中字符串的比较方式为字节码 Option Compare Binary

'要测试本例的文件操作,就新建一个窗体,在上面添加一个名为“cmdImport”的按钮, '单击后即执行下面的方法,完成文件读取和写入数据库的操作 '函数开始-------------------------------------------------- '主函数,执行的开始

Private Sub cmdImport_Click()

Dim cn As New ADODB.Connection

'指定连接字符串,本例连接到 D:\\db1.mdb 数据库 cn.ConnectionString = _

\ '开启连接,准备对数据库操作 cn.Open

'定义存储文件名的对象 Dim fileName As String

'指定要读取的CSV文件的名称本例为 D:\\test.csv fileName = \

'执行ImportFile函数,完成以下操作: '1 读取 D:\\test.csv 文件的内容

'2 将读取的文件内容写入 D:\\db1.mdb 数据库的 test 表中 ImportFile cn, \ '完成操作后关闭连接 cn.Close

'将连接设置为 Nothing ,及时释放其所占用的内存空间 Set cn = Nothing End Sub

'函数结束--------------------------------------------------

'函数开始--------------------------------------------------

'参数------------------------------------------------------------------

'1. cn 使用的数据库联接,本例连接到 D:\\db1.mdb '2. tblName 使用的数据库表名称,本例为 test '3. FileFullPath 读取的CSV文件目录(包括文件名),本例为 D:\\test.csv

'4. FieldDelimiter 指定CSV文件同一行内容以哪种字符分隔 默认为 ,(半角逗号) '5. RecordDelimiter 指定CSV文件不同行内容以哪种字符分隔 默认为 vbCrLf(回车换行符)

'参数------------------------------------------------------------------ Public Sub ImportFile(cn As Object, _

ByVal tblName As String, FileFullPath As String, _ Optional FieldDelimiter As String = \

Optional RecordDelimiter As String = vbCrLf)

Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset

Dim iFileNum As Integer Dim sFileContents As String Dim sTableSplit() As String Dim sRecordSplit() As String

Dim lCtr As Integer Dim iCtr As Integer

Dim lRecordCount As Long Dim iFieldsToImport As Integer

Dim asFieldNames() As String Dim abFieldIsString() As Boolean Dim iFieldCount As Integer Dim sSQL As String

'判断传入的cn参数是否是数据库连接对象,如果不是,退出程序 If Not TypeOf cn Is ADODB.Connection Then Exit Sub

'判断指定目录下的CSV文件是否真实存在,如果不是,退出程序 If Dir(FileFullPath) = \

'判断数据库联接是否已打开,如果没有则打开连接 If cn.State = 0 Then cn.Open

'使用数据库联接 cn 打开一个数据集 rs

CSV文件操作

VB6.0CSV文件操作2008-05-2718:04功能:读取CSV文件的内容并导入到数据库中环境:Access2003语言:VBA(对于使用VB6.0同样适用)数据库:D:\\db1.mdb数据表:testuserId数值型userName文本型CSV文件:D:\\test.csv(使用Exc
推荐度:
点击下载文档文档为doc格式
858ud3adyn721es5igwg
领取福利

微信扫码领取福利

微信扫码分享