我正在使用 fputcsv($file, $data)
在 PHP 中编写 CSV 文件。
一切正常,但是我不能只在 Excel 中打开它,而是必须导入它并指定编码和要使用的分隔符(在向导中)。
我已经看到从其他网站导出的内容只需单击即可正确打开,现在想知道我应该如何处理我的文件才能实现这一点。
我尝试使用这个库:http://code.google.com/p/parsecsv-for-php/ 但我什至无法让它运行,我不确定它是否真的能帮助我......
最佳答案
这就是我如何从 PHP 生成 Excel 可读的 CSV 文件:
- 添加 BOM 以在 Excel 中修复 UTF-8
- 设置分号(;)为分隔符
- 设置正确的标题(“Content-Type:text/csv;charset=utf-8”)
例如:
$headers = array('Lastname :', 'Firstname :');
$rows = array(
array('Doe', 'John'),
array('Schlüter', 'Rudy'),
array('Alvarez', 'Niño')
);
// Create file and make it writable
$file = fopen('file.csv', 'w');
// Add BOM to fix UTF-8 in Excel
fputs($file, $bom = (chr(0xEF) . chr(0xBB) . chr(0xBF)));
// Headers
// Set ";" as delimiter
fputcsv($file, $headers, ";");
// Rows
// Set ";" as delimiter
foreach ($rows as $row) {
fputcsv($file, $row, ";");
}
// Close file
fclose($file);
// Send file to browser for download
$dest_file = 'file.csv';
$file_size = filesize($dest_file);
header("Content-Type: text/csv; charset=utf-8");
header("Content-disposition: attachment; filename=\"file.csv\"");
header("Content-Length: " . $file_size);
readfile($dest_file);
适用于 Excel 2013。
关于php - 为 Excel 导出 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974163/