1

我们正在尝试以一种允许用户在 Excel 中编辑它们而不会丢失数据的方式使用 Python 中的 CSV 文件。但是,在 Excel 中使用撇号来转义文本以及 CSV 格式的实现似乎可以防止这种情况发生。为清楚起见,我将使用以下术语:

  • 引用以引用具有使用双引号的文本引用的 CSV 单元格,并且未引用以引用不引用的单元格
  • 撇号转义以引用具有前导撇号作为 Excel 中基础值中的文本标记的 Excel 单元格,但显示时没有该前导撇号

根据实验,似乎:

  • CSV 单元格中未加引号的单个'单元格在 Excel 中打开为包含撇号转义的空白字符串的单元格(基础值',显示为空单元格)
  • CSV 单元格中引用的单个'单元格在 Excel 中打开为包含撇号转义的单个撇号的单元格(基础值'',显示为'
  • 包含撇号转义的空白字符串的 Excel 单元格被保存为空的 CSV 单元格
  • 包含撇号转义撇号的 Excel 单元格被保存为单个未引用的'

这意味着即使在 CSV 单元格中引用单个撇号也会在 Excel 打开和保存时导致不带引号的撇号;下次通过 Excel 打开和保存此文件时,它将导致一个空白单元格。是否可以避免这种数据丢失?

PS 我知道CSV 不是完全标准化的文件格式;但是我找不到任何专门解决上述问题的文档。

4

1 回答 1

0

一个简单的解决方案是在将字符串存储在 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

这应该将所有数据放入单个列中。

从那里您可以使用Text-to-Columns解析数据并根据您的选择进行处理。

请务必在保存之前更换 tildas。

于 2014-04-10T12:25:58.890 回答