【问题标题】:excel utf-8 csv export and the separatorexcel utf-8 csv 导出和分隔符
【发布时间】:2013-01-24 17:03:46
【问题描述】:

所以我这样做了(我使用 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 而不是逗号作为分隔符,但同样的事情会发生,即。标签不会用作文件打开时的分隔符

【问题讨论】:

  • 再次尝试使用制表符,但逐行写入 UTF-16LE,这是 Excel 使用的默认分隔符,除非您明确使用 excel 中的导入功能...为什么不能使用 fputcsv ()?
  • 我做了...我用 \t 替换了 , 但它不起作用 excel 会显示一大堆 \t

标签: php excel drupal csv utf-8


【解决方案1】:

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

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

请注意以下几点:

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

阅读更多:

【讨论】:

  • 问题是“问题是,excel不会解析分隔符,即逗号将全部显示在一列中,而不是在打开文件时用作分隔符。有没有办法让这样当我打开它时,逗号将用作分隔符?”这表明File > Open 不起作用。这就是为什么我建议使用向导对其进行测试并尝试不同的分隔符,因为它也允许您在其中更改它。
  • @Pricey 问题是:“有没有办法让我打开它时,逗号将用作分隔符?” - 我的回答很适合。我同意你的答案更广泛,但我认为问题是“我想打开 CSV 而不需要额外的操作”。您的回答更适合这样的问题:“请告知如何打开/导入 CSV 并说出 Excel 使用哪个字符作为分隔符”。
  • 是的,我同意,如果他们没有逗号作为默认区域列表分隔符,那么可以选择更改区域列表分隔符,但他们可能不想进行更改,这取决于关于目前未知的用例。我的评论更多地与您的第二点有关,现在不应忽略 Excel 中的导入选项。
  • @Pricey 确定我们的答案涵盖了给定案例的 CSV 导入的所有方面)现在由询问者决定哪个更适合他。无论如何,为有用的建议投票!)
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

    对于 Excel 中带有 x 分隔值的 Unicode 支持,请使用制表符分隔的 UTF-16 Little-Endian(当您 另存为... > Unicode 文本 ( *.txt))。

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

    见:Excel and Unicode

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多