【问题标题】:PHP export to CSV & open in excel without having to use text import wizardPHP 导出为 CSV 并在 excel 中打开,无需使用文本导入向导
【发布时间】:2018-10-17 20:09:09
【问题描述】:

这有点愚蠢和不必要,但也有点浪费时间,因为我每天都这样做。但我想知道是否有一种方法可以使用 PHP 将数据导出为 CSV,在 excel 中打开文件时不需要使用文本导入向导。

目前我的代码看起来像这样,我认为这似乎在我所看到的每个地方都很标准:

header("Content-type: text/csv");
header('Content-Disposition: attachment;  filename=exported_shipments_'.date("Ymd").'.csv');
header("Pragma: no-cache");
header("Expires: 0");

echo "name" . "\t";
echo "address_1" . "\t";
echo "address_2" . "\t";
echo "city" . "\t";
echo "province_code" . "\t";
echo "postal_code" . "\t";
echo "country_code" . "\t";
echo "phone" . "\t";
echo "package_contents" . "\t";
echo "description" . "\t";
echo "value" . "\t";
echo "value_currency" . "\t";
echo "order_store" . "\t";
echo "order_id" . "\t";
echo "package_type" . "\t";
echo "size_x" . "\t";
echo "size_y" . "\t";
echo "size_z" . "\t";
echo "size_unit" . "\t";
echo "weight" . "\t";
echo "weight_unit" . "\t";
echo "postage_type" . "\t";
echo "signature_requested" . "\t";
echo "insurance_requested" . "\t";
echo "ship_date" . "\t";
echo "\n";

等等。

我可以做些什么来让 excel 识别出我希望它立即被分隔,而不必使用向导?

【问题讨论】:

  • 如果它是 csv,你为什么要使用标签? csv 中的 C 代表什么?
  • 另存为 excel xls/xlsx 对您来说不是一个选项吗?

标签: php excel csv


【解决方案1】:

您使用的是制表符,而不是逗号来分隔 CSV。您也可以强制 Content-Typeapplication/vnd.ms-excel,并将扩展名设置为 .xls,它会打开使用 Excel 并自动导入 CSV。

您可以使用此代码执行此操作:

<?php
header ( "Content-type: application/vnd.ms-excel");
header ( "Content-Disposition: attachment; filename=exported_shipments_" . date ( "Ymd") . ".xls");
header ( "Pragma: no-cache");
header ( "Expires: 0");

$data = array ();
$data[] = "name";
$data[] = "address_1";
$data[] = "address_2";
$data[] = "city";
$data[] = "province_code";
$data[] = "postal_code";
$data[] = "country_code";
$data[] = "phone";
$data[] = "package_contents";
$data[] = "description";
$data[] = "value";
$data[] = "value_currency";
$data[] = "order_store";
$data[] = "order_id";
$data[] = "package_type";
$data[] = "size_x";
$data[] = "size_y";
$data[] = "size_z";
$data[] = "size_unit";
$data[] = "weight";
$data[] = "weight_unit";
$data[] = "postage_type";
$data[] = "signature_requested";
$data[] = "insurance_requested";
$data[] = "ship_date";
$fp = fopen ( "php://output", "w");
fputcsv ( $fp, array_values ( $data), ",", "\"");
fclose ( $fp);
?>

【讨论】:

  • 我没有意识到你可以从 PHP 保存为 excel 非常感谢
  • 坏主意,excel会检测到文件类型不匹配并发出警告,只需调用一个csv一个csv ..在本地测试,上面得到警告,正确的csv头工作正常
  • 但是请注意,如果您使用扩展字符,您仍然会遇到麻烦 - Excel 以无法正确导入 UTF-8 csv 文件而闻名,并且没有适用于所有版本的单一修复程序Excel。
  • @IdontDownVote 是的,我遇到了那个错误,所以我会坚持使用逗号而不是我支持的制表符来修复 csv
  • 所有你需要做的,
猜你喜欢
  • 2017-05-04
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
相关资源
最近更新 更多