Поэтому у меня проблемы с открытием .csv файла, который загружается с помощью IE11, и если я использую chrome, mozilla и т. Д., Файл отформатирован хорошо.
Случай: в php я генерирую список и экспортирую как .csv. Если я скачаю этот файл с экс. Chrome и открыть в Excel, каждый столбец отформатирован хорошо, но тот же процесс в IE11 и вывод неформатированный текст.
Ниже вы можете найти код и результаты:
Вот файл .csv (загружается с помощью Chrome, Mozilla, Opera, Safari)
А вот и выход из IE11
У кого-нибудь есть идеи, как решить эту проблему?
Увидеть этот ответ с похожей проблемой.
Попробуйте использовать эти заголовки:
header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"exportevent.csv\";" ); header("Content-Transfer-Encoding: binary");
Я думаю, что тип содержимого октет-поток заставляет IE загружать
файл.
Этот код подходит мне
// fetching data from database
$products = Product::undeletedProducts();
// heading in array
$columns = array('Code','Place','Country','Price');
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment;filenameproduct_list_'.time().'.csv');
// file creation with write mode
$output = fopen('php://output', 'w');
// putting headings in csv file
fputcsv($output, $columns);
foreach($products as $product)
{
$outRow = [];
// for dynamic columns
foreach($columns as $column)
{
array_push($outRow,$user->{$column});
}
fputcsv($output, $outRow);
}