PHP-экспорт в CSV & open в excel без необходимости использования мастера импорта текста

Это своего рода глупое и ненужное, но также и пустая трата времени, так как я делаю это каждый день. Но мне интересно, есть ли способ экспортировать данные с помощью 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" . "	";
echo "address_1" . "	";
echo "address_2" . "	";
echo "city" . "	";
echo "province_code" . "	";
echo "postal_code" . "	";
echo "country_code" . "	";
echo "phone" . "	";
echo "package_contents" . "	";
echo "description" . "	";
echo "value" . "	";
echo "value_currency" . "	";
echo "order_store" . "	";
echo "order_id" . "	";
echo "package_type" . "	";
echo "size_x" . "	";
echo "size_y" . "	";
echo "size_z" . "	";
echo "size_unit" . "	";
echo "weight" . "	";
echo "weight_unit" . "	";
echo "postage_type" . "	";
echo "signature_requested" . "	";
echo "insurance_requested" . "	";
echo "ship_date" . "	";
echo "
";

И так далее.

Есть ли что-нибудь, что я могу сделать, чтобы excel узнал, что я хочу, чтобы он был сразу разграничен, вместо того, чтобы использовать мастер?

Всего 1 ответ


Вы используете вкладку, а не запятую, чтобы отделить CSV. Вы также можете принудить Content-Type к приложению / 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);
?>

Есть идеи?

10000