要解决 PHP 导出 xls 文件乱码的问题,可以采用以下两种方式:
- 使用 PHPExcel 库来生成 xls 文件,这个库可以很好地解决中文乱码问题。
- 在导出文件时,将数据转换为 UTF-8 编码,再使用 header() 函数设置响应头信息。
- 使用 PHPExcel 库来生成 xls 文件
步骤 1:下载 PHPExcel 库
可以从官网或 GitHub 上下载 PHPExcel 库,并将其解压到项目目录下。
步骤 2:引入 PHPExcel 类
在 PHP 文件中引入 PHPExcel 类文件,例如:
require_once "Classes/PHPExcel.php";
步骤 3:创建一个 PHPExcel 对象
使用 PHPExcel 类的 create() 方法创建一个 PHPExcel 对象,例如:
$objPHPExcel = PHPExcel::create();
步骤 4:设置文件属性
设置文件属性,例如:
$objPHPExcel->getProperties()
->setCreator("Creator")
->setLastModifiedBy("LastModifier")
->setTitle("Title")
->setSubject("Subject")
->setDescription("Description")
->setKeywords("Keywords")
->setCategory("Category");
步骤 5:添加数据
向 PHPExcel 对象中添加数据,例如:
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue("A1", "Hello")
->setCellValue("B1", "World");
步骤 6:输出文件
使用 PHPExcel 类的 IOFactory::createWriter() 方法输出文件,例如:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5");
$objWriter->save("example.xls");
- 将数据转换为 UTF-8 编码
步骤 1:将数据转换为 UTF-8 编码
使用 PHP 的 iconv() 函数将数据转换为 UTF-8 编码,例如:
$data = iconv("gb2312", "utf-8", $data);
步骤 2:设置响应头信息
使用 header() 函数设置响应头信息,例如:
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment;filename="example.xls"");
header("Cache-Control: max-age=0");
步骤 3:输出文件
将数据输出到浏览器,例如:
echo $data;