如何使用Excel打开和保存CSV文件中的前导撇号而不丢失数据?

如何使用Excel打开和保存CSV文件中的前导撇号而不丢失数据?,excel,csv,escaping,data-loss,Excel,Csv,Escaping,Data Loss,我们试图使用Python中的CSV文件,使用户可以在Excel中编辑它们,而不会丢失数据。然而,在Excel中使用撇号来转义文本,再加上CSV格式的实现似乎阻止了这一点。为清楚起见,我将使用以下术语: quoted表示使用双引号引用文本的CSV单元格,unquoted表示不使用双引号引用文本的单元格 撇号转义是指Excel单元格,该单元格在Excel的基础值中有一个前导撇号作为文本标记,但显示时没有前导撇号 根据实验,似乎: CSV单元格中的单个未加引号的'将在Excel中作为包含撇号转义

我们试图使用Python中的CSV文件,使用户可以在Excel中编辑它们,而不会丢失数据。然而,在Excel中使用撇号来转义文本,再加上CSV格式的实现似乎阻止了这一点。为清楚起见,我将使用以下术语:

  • quoted表示使用双引号引用文本的CSV单元格,unquoted表示不使用双引号引用文本的单元格
  • 撇号转义是指Excel单元格,该单元格在Excel的基础值中有一个前导撇号作为文本标记,但显示时没有前导撇号
根据实验,似乎:

  • CSV单元格中的单个未加引号的
    '
    将在Excel中作为包含撇号转义空白字符串的单元格打开(基础值
    '
    ,显示为空单元格)
  • CSV单元格中的单个带引号的
    将在Excel中打开,作为包含撇号转义的单个撇号的单元格(底层值
    '
    ,显示为
    '
  • 包含撇号转义空白字符串的Excel单元格将另存为空CSV单元格
  • 包含撇号转义撇号的Excel单元格将另存为单个不带引号的
这意味着,即使在CSV单元格中引用单个撇号,在Excel打开和保存时也会导致未引用撇号;下次使用Excel打开和保存此文件时,将生成一个空白单元格。有可能避免这种数据丢失吗


PS我知道这一点;但是,我还没有找到任何专门解决上述问题的文档。

一个简单的解决方案是在将字符串存储到Excel中之前替换单引号(撇号)……此示例使用tilda

Sub ImportFile()
    Close #1
    Open "C:\TestFolder\TestFile.csv" For Input As #1
    j = 1
     Do While Not EOF(1)
            Line Input #1, TextLine
            TextLine = Replace(TextLine, "'", "^")
            Cells(j, 1).NumberFormat = "@"
            Cells(j, 1) = TextLine
            j = j + 1
        Loop
    Close #1
End Sub
这应该将所有数据放在一列中

从那里,您可以使用文本到列解析数据,并根据您的选择进行处理


保存之前,请务必更换瓷砖。

正确;为了澄清这一点,我希望人们通过双击文件(扩展名为
.csv
)来打开该文件,这样会使运行宏代码变得笨拙。我想看看Excel的默认打开和保存csv文件是否可能不丢失数据