我有一个Excel文件,其中有一些西班牙字符(波浪号等),我需要将其转换为CSV文件作为导入文件使用。然而,当我将另存为CSV时,它会破坏不是ASCII字符的“特殊”西班牙字符。它似乎也这样做的左右引号和长破折号,似乎是来自最初的用户在Mac中创建Excel文件。

由于CSV只是一个文本文件,我确信它可以处理UTF8编码,所以我猜这是Excel的限制,但我正在寻找一种方法,从Excel到CSV,并保持非ascii字符完整。


当前回答

你可以在没有第三方软件的现代Windows机器上做到这一点。这种方法是可靠的,它可以处理包含引号逗号、引号制表符、CJK字符等的数据。

1. 从Excel中保存

在Excel中,使用Unicode文本(*.txt)类型将数据保存到file.txt。

2. 开始PowerShell

从开始菜单运行powershell。

3.在PowerShell中加载文件

$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode

4. 将数据保存为CSV格式

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation

其他回答

我也遇到过同样的问题,但有一个简单的解决方案。

在Excel 2016或更高版本中打开xlsx文件。 在“另存为”中选择此选项:"(CSV UTF-8(逗号分隔)*.csv)"

它工作完美,并生成一个csv文件,可以导入到任何软件。我在我的SQLITE数据库中导入了这个csv文件,它与所有unicode字符完好无损地完美工作。

我发现OpenOffice的电子表格应用程序Calc非常擅长处理CSV数据。

在“另存为…”对话框中,单击“格式选项”可获得CSV的不同编码。LibreOffice的工作原理与AFAIK相同。

用记事本+

这将修复Excel保存的损坏的CSV文件,并以适当的编码重新保存它。

从Excel导出CSV 加载到notepad++ 解决编码 保存

Excel保存在CP-1252 / Windows-1252中。在notepad++中打开CSV文件。选择

Encoding > Character Sets > Western European > Windows-1252

Then

Encoding > Convert to UTF-8
File > Save

首先告诉notepad++编码,然后转换。有些其他答案在转换时没有先设置正确的编码,这会使文件更加混乱。他们会把原本应该是“達”的东西变成“達”。如果您的字符不符合CP-1252,那么它在保存为CSV时就已经丢失了。用另一个答案。

将xls文件(Excel文件)保存为Unicode text=>文件将保存为文本格式(.txt) 将格式从.txt更改为.csv(将文件从xyz .txt重命名为xyz .csv

您可以在Unix下使用iconv命令(也可以在Windows上作为libiconv)。

在Excel下保存为CSV后,在命令行输入:

iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(记住用你的编码替换cp1250)。

工作快速和伟大的大文件,如邮政编码数据库,不能导入到GoogleDocs(400.000单元格限制)。