php - 为 Excel 导出 CSV

标签 php excel

我正在使用 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/

相关文章:

java - 使用 <a> 标签在 jsp 页面中链接 php 页面

php - Facebook Graph API PHP SDK 作为页面在页面上发布

c# - 重新分配单元格值后 Excel 公式丢失

php - 为什么 SplPriorityQueue 类是一个队列(概念)

php - 使用 PHP 的大量 SQLite 插入

vba - 如何从宏中选择基于单元格

excel - 将带有变量的公式添加到事件单元格

excel - 在 Excel 中使用 vba 填充行 x 列设计的表格

VBA : Using a function to set a new sheet

php - 如何在 CakePHP 中访问 POST 数据然后将其删除?