PHPExcel 是一个用于处理 Excel 文件的 PHP 库,可以用来读取、写入和操作 Excel 文件。虽然它主要用于处理 .xls
和 .xlsx
格式的文件,但也可以用来导出 CSV(逗号分隔值)文件。
.xls
和 .xlsx
。以下是一个使用 PHPExcel 导出 CSV 文件的示例代码:
<?php
require_once 'vendor/autoload.php';
use PHPExcel;
use PHPExcel_IOFactory;
// 创建一个新的 PHPExcel 对象
$objPHPExcel = new PHPExcel();
// 设置单元格的值
$objPHPExcel->getActiveSheet()
->setCellValue('A1', '姓名')
->setCellValue('B1', '年龄')
->setCellValue('C1', '邮箱');
$objPHPExcel->getActiveSheet()
->setCellValue('A2', '张三')
->setCellValue('B2', 25)
->setCellValue('C2', 'zhangsan@example.com');
$objPHPExcel->getActiveSheet()
->setCellValue('A3', '李四')
->setCellValue('B3', 30)
->setCellValue('C3', 'lisi@example.com');
// 设置单元格样式
$objPHPExcel->getActiveSheet()->getStyle('A1:C3')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 导出为 CSV 文件
$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$writer->save('data.csv');
echo 'CSV 文件已生成!';
?>
原因:CSV 文件的编码格式可能与编辑器默认编码不一致。
解决方法:在导出 CSV 文件时,显式设置编码格式为 UTF-8。
$writer->setEncoding('UTF-8');
原因:某些字段中包含了逗号或换行符,导致 Excel 自动添加引号。
解决方法:在导出前对字段进行转义处理。
function escape_csv($value) {
if (strpos($value, ',') !== false || strpos($value, '"') !== false || strpos($value, "\n") !== false) {
$value = str_replace('"', '""', $value);
return '"' . $value . '"';
}
return $value;
}
// 使用示例
$name = '张三,李四';
$escapedName = escape_csv($name);
$objPHPExcel->getActiveSheet()->setCellValue('A2', $escapedName);
通过以上方法,可以有效解决导出 CSV 文件时遇到的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云