【问题标题】:How to save Excel file as csv with UTF-16 formatting如何使用 UTF-16 格式将 Excel 文件另存为 csv
【发布时间】:2012-10-12 17:54:30
【问题描述】:

我遇到了 Excel 无法正确保存我的文件的问题。我有一个数据列表,分为三列:String String INt。

我想将此文件读入 Java 程序以执行一些计算。由于原生 UTF-8 编码,Excel 导出为 .csv 文件会导致我丢失大量数据。我可以将它保存为 UTF-16 .txt 文件,但是,我得到了另一个烦人的结果。如果我在每个字段字段之间插入逗号列,它会保存带有引号的逗号!我已经看到了一些解决这个问题的方法,但它们不保留 UTF-16 编码。

任何帮助将不胜感激。

【问题讨论】:

  • 如果我是你,我会使用 Apache POI 库并直接从 xlsx 读取,而不是转换为 csv,正如你所经历的那样,这可能很棘手。对于您提到的情况,它应该足够简单。我过去做过这个,它可以很好地处理 UTF-8。
  • 我对 Apache POI 没有任何经验,但简单浏览一下他们的网站肯定看起来很有希望。只要我可以使用它应该工作的库提取 UTF-16 和 ASCII 字符。
  • 我一直使用 UTF-16 和东欧字符集,而且效果非常好。
  • 导出为 UTF-8 不应丢失任何数据。您可能意外导出为代码页 1252。 CSV 格式通常需要引用包含逗号的列。如果这不是您想要的,那么您不需要 CSV 文件。不要责怪 Excel 遵守规则。
  • 更具体地说,我丢失了特殊字符。该文件包含的名称可能包含以 .csv 格式保存时未保留的特殊字符。

标签: excel csv utf-16 comma


【解决方案1】:
  1. 在 Excel 中将文件另存为 CSV(逗号分隔)
  2. 在 notepad++ 中打开保存的 CSV 文件
  3. 编码 -> 转换为 UCS-2 Big Endian

完成。

【讨论】:

    【解决方案2】:

    如何在 Python 中将 Excel 文件保存为 UTF-16 格式的 csv

    file = open("filename", 'a+', encoding='utf-16')
    file.write(f"1,2,3,4,5,6,7")
    file.close()
    

    【讨论】:

    【解决方案3】:

    这是一次性的,还是您将其作为更大计划的一部分?如果它是一次性的,您可以在任何文本编辑器中对“,”进行查找和替换。

    【讨论】:

    • 我想到了替换选项。截至目前,这是一个一次性问题,但我怀疑我会再次遇到这个问题。
    • 如果它不是更大程序的一部分 - 那么只需对文本文件进行查找和替换。需要两秒钟。应该就这么简单。 Notepad++ 是一个很棒的文本编辑器。否则,您可能只需在 MS 记事本或写字板中完成。祝你好运。
    猜你喜欢
    • 2012-06-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2022-08-23
    相关资源
    最近更新 更多