如何将带有中文字符的 Excel 文件导出为 CSV?

Posted

技术标签:

【中文标题】如何将带有中文字符的 Excel 文件导出为 CSV?【英文标题】:How do I export an Excel file with Chinese characters to a CSV? 【发布时间】:2011-10-21 08:34:36 【问题描述】:

我有一个 Excel 文档,其中包含一个包含中文字符的数据表。我正在尝试将此 Excel 电子表格导出为 CSV 文件以导入 mysql 数据库。

但是,当我将 Excel 文档保存为 CSV 文件时,记事本将生成的 CSV 文件的中文字符显示为问号。导入MySQL会保留问号,完全忽略原来的汉字是什么。

我怀疑这可能与使用带有 UTF-8 编码的 Excel 有关。感谢您的帮助!

【问题讨论】:

记事本是假的。你试过用真正的文本编辑器打开它吗?比如notepad++或者ultraeditor。 谢谢黄。我试过 Notepad++,然后是 jEdit,它们都支持 UTF-8。问号还没有变成汉字。因此,我认为 Excel 在将电子表格导入 CSV 格式时只是简单地把汉字弄脏了。我仍在寻找解决方案。 【参考方案1】:

以下方法已经过测试并用于在 MongoDB 中导入 CSV 文件,所以应该可以:

    在 Excel 工作表中,转到文件 > 另存为。

    为文件命名并从“保存类型”旁边的下拉列表中选择 Unicode 文本 (*.txt),然后单击“保存”。

    使用您喜欢的文本编辑器(例如记事本)打开 unicode .txt 文件。

    由于我们的 unicode 文本文件是制表符分隔文件,并且我们想将 Excel 转换为 CSV(逗号分隔)文件,因此我们需要将所有制表符替换为逗号。

    选择一个制表符,右键单击它并从上下文菜单中选择复制,或者直接按 CTRL+C,如下面的屏幕截图所示。

    按 CTRL+H 打开“替换”对话框并将复制的选项卡 (CTRL+V) 粘贴到“查找内容”字段中。执行此操作时,光标将向右移动,指示已粘贴选项卡。在替换为字段中键入逗号,然后单击全部替换。

    单击文件 > 另存为,输入文件名并将编码更改为 UTF-8。然后点击保存按钮。

    直接在记事本的另存为对话框中将 .txt 扩展名更改为 .csv,然后选择保存类型旁边的所有文件 (.),如下面的屏幕截图所示。

    通过单击文件 > 打开 > 文本文件(.prn、.txt、.csv)从 Excel 打开 CSV 文件并验证数据是否正常。

来源here

【讨论】:

【参考方案2】:

据我所知,Excel 不会以任何 Unicode 编码保存 CSV 文件。我最近尝试将文件导出为带有 £ 符号的 CSV 时遇到了类似的问题。我受益于能够完全使用其他工具。

我的 Excel 2010 版本可以以 Unicode 格式 File > Save As > Unicode Text (.txt) 导出,但输出是制表符分隔的 UCS-2 编码文件。我根本不了解 MySQL,但简要了解一下规范,它似乎可以处理制表符分隔的导入和 UCS-2。可能值得尝试此输出。

编辑:此外,您始终可以在 Notepad++ 中打开此 Unicode 输出,将其转换为 UTF-8 Encoding > Convert to UTF-8 without BOM 并可能也将所有制表符替换为逗号(在扩展搜索模式下使用替换对话框,在查找中使用 \t框和替换框中的,。)

【讨论】:

【参考方案3】:

你可能想试试notepad++,我怀疑notepad会支持unicode字符。

http://notepad-plus-plus.org/

【讨论】:

如果文件以被识别为字节顺序标记的东西开头,记事本支持 unicode 字符,这在 UTF-8 中确实很丑陋(特别是考虑到 UTF-8 不需要它 首先)。 您好,如上所述,我尝试过 Notepad++ 和 jEdit,它们都支持 UTF-8。同样,问号仍然没有变成汉字。因此,我认为 Excel 在将电子表格导入 CSV 格式时只是简单地把汉字弄脏了。我仍在寻找解决方案。 Excel 不会导出为 UTF-8 格式的 CSV。它仅支持“Unicode 文本”格式的 UTF-8。【参考方案4】:

对于某些人来说,此解决方案可能有效:https://support.geekseller.com/knowledgebase/utf-8/

保存 csv 时,转到右下角工具 > Web 选项 > 编码 > Unicode (UTF-8)

或者这个 SO 答案:只需使用 Google 表格将 csv 保存为 unicode: Excel to CSV with UTF8 encoding

【讨论】:

谢谢,这与当前的 Office 365 版本的 excel 完美配合!【参考方案5】:

我的数据上面的方法都试过了,但是我的数据不太好用(简体中文,超过700Mb。我试过windows中英文系统,英文和中文excel。windows excel好像不能保存到utf8,即使它声称这样做。我在另存为中指定了uft8 csv,但是当我使用“打开表”来检测编码方法时。它不是uft8,也不是GB *。 这是我的最终解决方案。

(1) 下载“打开工作表”。

(2) 正确打开。您可以滚动编码方法,直到看到预览窗口中显示的汉字。

(3) 将其保存为 utf-8(如果需要 utf-8)。

PS:您需要弄清楚系统中的默认编码。目前 据我所知,Ubuntu 处理 UTF8 很好。但是windows默认 简体中文是以GB**开头的。即使你编码为utf8, 不过,您也可以正确打开它。就我而言, r 不能 打开我的 utf-8 csv,但可以打开 GB* 编码。

即使您的文件非常大,这种方法也能很好地工作。 其他一些解决方法是谷歌表(但文件大小可能受到限制)。 Notepad++ 也适用于较小的文件。

有一种方法可以检测编码方式,方法是打开文件并滚动浏览编码方式,直到看到正确显示的中文。

【讨论】:

【参考方案6】:

你应该保存 csv 文件:

df.to_csv(file_name, encoding = 'utf_8_sig')

代替:

df.to_csv(file_name, encoding = 'utf-8')

【讨论】:

以上是关于如何将带有中文字符的 Excel 文件导出为 CSV?的主要内容,如果未能解决你的问题,请参考以下文章

使用带有保存对话框的 java 将内容导出到文本文件

如何在asp.net中实现将sqlserver数据库表的数据导入到excel中,希望在代码中生成Excel表并带有中文表头?

如何使用 checkListBox 将数据导出到 Excel

导出 Hive 查询结果

如何将access中的数据导出为EXCEL文件?

如何把SQLServer表数据导出为Excel文件