0

所以我这样做了(我使用 Drupal 6):

  while(@ob_end_clean());
  drupal_set_header("Content-type: text/csv;");
  drupal_set_header("Cache-Control: no-store, no-cache");
  drupal_set_header("Content-Disposition: attachment; filename=translations.csv");
  print chr(255) . chr(254) . mb_convert_encoding($output, 'UTF-16LE', 'UTF-8');
  exit;

导出 utf-8 字符的 CSV。当我导入 excel 时,utf-8 字符会正确显示。

问题是,excel 不会解析分隔符,即逗号将全部显示在一列中,而不是在文件打开时用作分隔符。

有没有办法让我打开它时,逗号将用作分隔符?

csv中的一行如下:

$output .= '"'.str_replace('"', '""', $id).'","'.str_replace('"', '""', $source).'","'.str_replace('"', '""', $translation) . '"';

我尝试使用制表符 \t 而不是逗号作为分隔符,但同样的事情会发生,即。选项卡不会用作文件打开时的分隔符

4

3 回答 3

1

如果您使用 Excel 2007,那么如果您先打开 Excel,则可以转到Data选项卡,然后选择From Text

在资源管理器浏览器中选择您的 .csv 文件,然后应该会出现文本向导。这为您提供了更多步骤和选项来控制它在分解列等方面要寻找的内容。

旧版本的 Excel 也支持它,但我不能确定它在同一个地方,但我认为它是。

试试那个向导,看看它是否能解决你的问题。

于 2013-01-24T19:46:23.637 回答
1

要将逗号用作默认 CSV 分隔符,需要更改相应的 Windows 区域设置选项:

转到控制面板--> 区域和语言选项(或日期、时间和区域选项--> 在某些机器上的区域和语言选项)--> 单击自定义按钮。在打开的对话框中,您将看到“列表分隔符”选项,您可以在其中将逗号更改为不同的字符 --> 单击应用,然后单击确定,然后再次应用。

请注意以下事项:

  1. 默认情况下,此设置用于 CSV 导入和导出。
  2. File > Open您应该使用、 NOT打开 CSV 文件Data > Import External Data > Import Data...,或者只需在资源管理器中双击任何 CSV 文件,它将在 Excel 中打开并应用默认分隔符。

阅读更多:

于 2013-01-25T06:02:59.313 回答
0

对于 Excel 中带有 x 分隔值的 Unicode 支持,请使用制表符分隔的 UTF-16 Little-Endian(当您Save As... > Unicode Text (*.txt)时 Excel 生成的内容)。

如果你不这样做,你会遇到类似你遇到的问题。

请参阅:Excel 和 Unicode

于 2013-04-24T16:10:51.577 回答