停止访问将两组双引号写入 csv

Posted

技术标签:

【中文标题】停止访问将两组双引号写入 csv【英文标题】:Stop Access writing two sets of double quotes to csv 【发布时间】:2016-10-14 11:27:44 【问题描述】:

所以,我正在使用记录集的输出并将其写入 csv 文件。但是我遇到了引号问题。理想情况下,我想将它们作为文本标记包含在内。但是,如果我将它们包含在我的文本行中,它们会被打印为两组引号。

我想要这个作为输出(由制表符分隔):

"Header1" "header2" "......[]...."headerX"

我试过了

Sub Write_Tbl(Filename, StrSQL)
Dim unicode, UTF, i As Long , Fileout As Object, forwriting,  TristateUseDefault, TxtStr As String, TextHolder As String, rs As Recordset

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

Dim File_out As Object
Set File_out = fso.CreateTextFile(Filename, True, unicode = UTF - 8)
File_out.Close

Open Filename For Output As #1

Set rs = CurrentDb.OpenRecordset(StrSQL)
rs.MoveFirst

'for headers
    TxtStr = rs.Fields.Item(0).Name         'so that there isn't a tab at the start of the string

For i = 1 To rs.Fields.Count - 1

TxtStr = TxtStr & chr(34) & vbTab & chr(34) & rs.Fields.Item(i).Name
Next i

Write #1, TxtStr & chr(34)          'write headers to file

并将其作为输出

""Header1"" ""header2"" ""......[]....""headerX""

所以我去掉了引号,得到了这个:

'for headers
    TxtStr = rs.Fields.Item(0).Name         'so that there isn't a tab at the start of the string

For i = 1 To rs.Fields.Count - 1

TxtStr = TxtStr & vbTab & rs.Fields.Item(i).Name
Next i

Write #1, TxtStr          'write headers to file

我得到的是

"Header1 header2 ......[]....headerX"

如果我在本地窗口中监视变量,那么只有一组引号,所以它一定与打印有关?如果我使用单引号(ascii no 39)就不会发生这种情况。我也尝试只使用写入文件,而不是作为文本流,但我遇到了内存问题和ERROR 5 issues. STUMPED。请帮忙。

【问题讨论】:

在另一个说明中,这样做: Dim unicode, UTF, i As Long 只会将 i 变暗,其他变体,你需要:'Dim unicode As Long, UTF As Long, i As长' 谢谢,这实际上是我的意图,但是在 vba 中编码很长一段时间以来,我都不知道它会这样工作,这是一个很好的且广泛无证的观点。 【参考方案1】:

如果您已在 VBA 中准备好文本字符串,则应使用 Print # 语句而不是 Write #

文档:Print #Write #

Print # 语句不同,Write # 语句在写入文件时在项目和字符串周围的引号之间插入逗号。

注意:

我不确定这些函数是否编写 Unicode,或者关心文件是如何创建的。

Open Filename For Output As #1

如果文件不存在,将创建该文件,因此您可以省略整个 CreateTextFile 部分。

或者改用File_out.WriteLine(),混合使用这两种方法(FSO 和古老的 Print/Write 语句)似乎很奇怪。

编辑:见How to create and write to a txt file using VBA

【讨论】:

谢谢,这真的很有帮助。

以上是关于停止访问将两组双引号写入 csv的主要内容,如果未能解决你的问题,请参考以下文章

在写入csv c#时向字符串添加双引号

opencsv写入时去掉双引号

python处理完CSV数据后重新写入新CSV文件,为啥新文件用记事本打开没有双引号?该怎么解决?谢谢

正则表达式从 CSV 中删除双引号

Python Pandas to_csv,您可以使用.replace()抢先处理双引号转义问题[重复]

SQL导入csv数据后,表格的数据有双引号,请问有人知道怎么去掉双引号吗?不去掉双引号,筛选不了数据?