如何在将 Excel 工作表另存为 csv 文件时强制在每个字段中加上引号?

Posted

技术标签:

【中文标题】如何在将 Excel 工作表另存为 csv 文件时强制在每个字段中加上引号?【英文标题】:How to force quotes in every field while saving an excel worksheet as a csv file? 【发布时间】:2010-08-30 13:46:12 【问题描述】:

这是我的情况。

data = "" & data & ""
xlsheet.Range(crange).Value = data
xlfile.SaveAs(FileName:=finalfilename, FileFormat:=6)

此代码将 " 放在数据周围,将数据放在范围内并将带有一个工作表 (xlsheet) 的工作簿 (xlfile) 保存为 csv 文件。

如果我在记事本中打开 csv 文件,我会发现以下内容

1.引号被删除 2.数字中的前导0被删除

如何在以编程方式保存文件时确保引号存在?提前致谢!

【问题讨论】:

【参考方案1】:

这一行没有做任何事情:

' Append empty strings on front and back (i.e., do nothing). '
data = "" & data & ""

试试这个:

' Append double quotes on front and back. '
data = """" & data & """"

这有帮助吗?


更新:我可能在这里偏离了基础,但我认为问题可能只是您对 Excel 在保存时所做的事情没有足够的细粒度控制CSV 文件。我记得,默认情况下,它不会在值周围加上引号,除非需要它们来限定一个离散单元格,该单元格可能包含否则会弄乱 CSV 格式的数据。例如,它会在包含逗号的文本值的单元格周围加上引号。

大概它还会将文本值中的单引号转换为 CSV 文件中的双引号,并将包含引号的文本值用引号括起来。

对我来说,解决这个问题的最明显方法就是自己将数据保存到磁盘。这样,您可以手动在每个单元格周围加上引号,而不必担心 voo doo Excel 可能会在 SaveAs 调用时自动执行什么操作。

显然,这很烦人,因为它需要更多的工作。但这是我目前唯一想到的想法。无论如何,它不应该是那么太多的工作。

【讨论】:

种类...现在在 csv 文件中的数据前后添加了 3 个引号。例如“”“mydata”“”。当我在excel中打开它时,每个单元格数据的前面和后面都有“。虽然它很好,但不需要,我们需要csv文件中的引号而不是在excel中打开时 是的,丹,导出时 Excel 真的很糟糕。我看到它具有强大的可调整导入功能,而只是用于导出的小型“另存为”功能。 MS很烂:( Excel 不会引用每个值,因为它不需要并且浪费空间。它还认为前导零是它不存储的格式化信息。以 Excel 可以理解的 CSV 格式存储前导零的唯一方法是将 01 写为 "=""01""" (引号等于引号零一引号引号)。为什么你首先要跳过 Excel?编写自己的 CSV 文件相当容易。【参考方案2】:

为什么不对需要引用的单元格使用自定义格式?

如果您为单元格列设置自定义格式,则所有值都将采用该格式。

对于数字......就像一个邮政编码......它会是这个 '#' 对于字符串文本,它会是这个 '@'

您将文件保存为 csv 格式,它会根据需要在单元格数据周围包含所有引号。

【讨论】:

当心样板复制粘贴答案,尤其是在旧帖子上:***.com/a/12481173/419 - 可能会出现垃圾邮件。或许可以考虑将这些问题标记为骗子。 考虑到这是我之前对另一个接近相同问题的回答,我认为它会适用。不过还是谢谢。

以上是关于如何在将 Excel 工作表另存为 csv 文件时强制在每个字段中加上引号?的主要内容,如果未能解决你的问题,请参考以下文章

怎样在excel中编写CSV文件

将多个 Excel 工作表另存为 PDF

将工作表另存为 PDF 时,换行符变为矩形符号

如何将选定的工作表另存为新工作簿

用于在另存为对话框中将工作表另存为预命名文件的 VBA 代码

将excel另存为pdf,将其方向更改为水平