完美解决phpexcel导出到xls文件出现乱码的问题

yizhihongxing

针对PHP程序导出Excel表格时遇到的乱码问题,可以采取以下步骤:

1. 指定文件编码

在使用PHPExcel导出表格时,可以在创建PHPExcel_IOFactory对象时指定编码:

$excel = new \PHPExcel();
$objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->setUseBOM(true);  // 设置使用BOM
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="export.xls"');
$objWriter->save('php://output');

上述代码中,setUseBOM的作用是添加BOM头信息,以表明文件编码是UTF-8。BOM头信息可以用windows自带的“写字板”编辑器实现,具体步骤如下:

  1. 打开写字板,文件->另存为
  2. 在“文件名”后面的“保存类型”处选择:“所有文件(.)”
  3. 在文件名后面输入“test.xls”,在“编码”处选择“Unicode”
  4. 点击“保存”按钮

2. 转换字符编码

如果使用PHPExcel导出表格时未指定编码,那么就需要在程序中进行字符编码转换。如下所示:

$excel = new \PHPExcel();
$worksheet = $excel->getActiveSheet();
$worksheet->setCellValue('A1', '姓名');
$worksheet->setCellValue('B1', '年龄');
$worksheet->setCellValue('C1', '性别');
$worksheet->setCellValue('D1', '国籍');
$worksheet->setCellValue('A2', '张三');
$worksheet->setCellValue('B2', '24');
$worksheet->setCellValue('C2', '男');
$worksheet->setCellValue('D2', '中国');

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="export.xls"');

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');

// 将字符编码转换为包含BOM头的GBK
ob_start();
$objWriter->save('php://output');
$data = ob_get_clean();
echo chr(0xEF), chr(0xBB), chr(0xBF), iconv("UTF-8", "GBK//TRANSLIT//IGNORE", $data);

示例说明:

下面是两个示例,分别演示了通过指定文件编码和字符编码转换两种方式解决PHPExcel导出乱码问题。

示例一:

$excel = new \PHPExcel();
$worksheet = $excel->getActiveSheet();
$worksheet->setCellValue('A1', '姓名');
$worksheet->setCellValue('B1', '年龄');
$worksheet->setCellValue('C1', '性别');
$worksheet->setCellValue('D1', '国籍');
$worksheet->setCellValue('A2', '李四');
$worksheet->setCellValue('B2', '26');
$worksheet->setCellValue('C2', '女');
$worksheet->setCellValue('D2', '美国');

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');

// 指定文件编码UTF-8,并添加BOM头信息
$objWriter->setUseBOM(true);

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="export.xls"');
$objWriter->save('php://output');

示例二:

$excel = new \PHPExcel();
$worksheet = $excel->getActiveSheet();
$worksheet->setCellValue('A1', '姓名');
$worksheet->setCellValue('B1', '年龄');
$worksheet->setCellValue('C1', '性别');
$worksheet->setCellValue('D1', '国籍');
$worksheet->setCellValue('A2', '王二');
$worksheet->setCellValue('B2', '30');
$worksheet->setCellValue('C2', '男');
$worksheet->setCellValue('D2', '日本');

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="export.xls"');

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');

// 将字符编码转换为包含BOM头的GBK
ob_start();
$objWriter->save('php://output');
$data = ob_get_clean();
echo chr(0xEF), chr(0xBB), chr(0xBF), iconv("UTF-8", "GBK//TRANSLIT//IGNORE", $data);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:完美解决phpexcel导出到xls文件出现乱码的问题 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 台式电脑怎么输出外音?台式机声音外放方法介绍

    以下是关于台式电脑输出外音的详细攻略: 台式电脑怎么输出外音? 使用音箱:将音箱插入电脑的音频输出接口,然后将音箱的电源打开,即可通过音箱播放电脑的声音。 使用耳机:将耳机插入电脑的音频输出接口,然后将耳机戴上,即可通过耳机听到电脑的声音。 使用HDMI接口:如果您的电脑和显示器之间使用了HDMI接口连接,您可以通过显示器的音频输出接口将声音输出到外部音响或…

    html 2023年5月17日
    00
  • XML轻松学习手册(三):XML的术语

    XML轻松学习手册(三):XML的术语是一本介绍XML相关概念、术语和标准的参考书。 在学习XML的过程中,掌握术语是十分重要的。因为术语不仅是XML标准的基础,也是XML数据交互的中介。 常用XML术语 1.文档(Document) 文档是XML信息的主要载体。每个XML文档包含一个或多个XML元素。文档必须以XML声明开始。 <?xml versi…

    html 2023年5月30日
    00
  • PPT素材夹怎么用 PPT素材夹使用教程

    以下是“PPT素材夹怎么用 PPT素材夹使用教程”的完整攻略: PPT素材夹怎么用 PPT素材夹使用教程 PPT素材夹是一款可以帮助用户管理PPT素材的工具。以下是使用PPT素材夹的步骤: 下载并安装PPT素材夹:首先,您需要从官方网站下载并安装PPT素材夹。 打开PPT素材夹:安装完成后,打开PPT素材夹。 添加素材:在PPT素材夹中,您可以添加各种类型的…

    html 2023年5月18日
    00
  • Java中四种XML解析技术

    Java中常用的四种XML解析技术包括DOM、SAX、JDOM和DOM4J。每种技术都有自己的特点和适用场景。下面分别进行详细讲解: DOM DOM(Document Object Model)是一种W3C推荐的XML解析技术,能够将整个XML文档加载到内存中,并以树形结构的形式表示XML文档的各个元素节点,因此能够轻松进行对XML文档的读写操作。 DOM解…

    html 2023年5月30日
    00
  • word2016空白处下划线不显示怎么办?

    以下是“word2016空白处下划线不显示怎么办?”的完整攻略: word2016空白处下划线不显示怎么办? 如果您在Word 2016中输入下划线,但是在空白处下划线不显示,可能是由于多种原因引起的。以下是一些可能的解决方案: 检查字体:首先,检查您正在使用的字体是否支持下划线。有些字体不支持下划线,因此在这些字体中输入下划线时,下划线可能不会显示。如果您…

    html 2023年5月18日
    00
  • React中的JSX { }的使用详解

    当我们在开发React应用时,通常会用到JSX语法。JSX是一种像HTML那样的语法扩展,它允许我们在JavaScript代码中编写类似XML的代码。在JSX中,我们可以使用大括号{ }来插入JavaScript表达式。 JSX中大括号 { } 的使用方法 1. 注入变量 我们可以使用大括号 { } 将JavaScript表达式嵌入到JSX语法中,如下所示:…

    html 2023年5月30日
    00
  • 卡巴斯基杀毒怎么样 好用吗

    卡巴斯基杀毒是一款知名的杀毒软件,它可以保护您的计算机免受病毒、恶意软件和网络攻击的侵害。以下是使用卡巴斯基杀毒的攻略: 步骤1:下载和安装卡巴斯基杀毒 访问卡巴斯基官网(https://www.kaspersky.com.cn/downloads)。 选择您需要的产品,然后点击“下载”。 下载完成后,双击安装程序,按照提示完成安装。 步骤2:运行卡巴斯基杀…

    html 2023年5月17日
    00
  • 苹果a1660怎么样 苹果a1660手机版本介绍

    以下是“苹果a1660怎么样 苹果a1660手机版本介绍”的完整攻略: 苹果a1660怎么样 苹果a1660手机版本介绍 苹果a1660是iPhone 7手机的一种版本,下面是苹果a1660手机版本介绍的攻略。 硬件配置 苹果a1660采用了苹果公司自主研发的A10 Fusion芯片,拥有四核心处理器和六核心图形处理器,性能非常强大。同时,苹果a1660还配…

    html 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部