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

针对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日

相关文章

  • 小红书带货怎么做?小红书带货技巧介绍

    以下是“小红书带货怎么做?小红书带货技巧介绍”的完整攻略: 小红书带货怎么做?小红书带货技巧介绍 小红书是一款非常流行的社交电商平台,用户可以在平台上分享自己的购物心得和产品评价,也可以通过平台进行购物和带货。下面是小红书带货的具体操作和技巧。 步骤1:选择合适的产品 用户需要选择一款合适的产品进行带货。可以根据自己的兴趣爱好、专业领域、粉丝群体等因素进行选…

    html 2023年5月18日
    00
  • 用asp+xmlhttp编写web采集程序

    用ASP+XMLHTTP编写web采集程序主要分为以下几个步骤: 第一步:创建ASP网页 首先需要一个ASP网页来实现采集程序的逻辑,可以使用请求对象(Request)和响应对象(Response)来实现。 第二步:创建XMLHTTP对象 使用XMLHTTP对象向目标网站发送HTTP请求,获取目标网站的HTML代码,具体可以通过以下代码来实现: Dim xm…

    html 2023年5月30日
    00
  • 如何解决office打开word文档时出现乱码的问题

    如何解决office打开word文档时出现乱码的问题是一个常见的问题,通常是因为文档使用的字符集与当前系统所支持的字符集不匹配,导致乱码的出现。下面我会为大家提供完整的步骤来解决这个问题。 解决方法: 方法1:更换字符集 首先需要确定当前文档所使用的字符集。可以右键点击Word文档,选择“属性”,然后在“常规”中找到“编码”; 找到文档使用的编码后,可以尝试…

    html 2023年5月31日
    00
  • Spring 面向切面编程AOP实现详解

    Spring 面向切面编程AOP实现详解 什么是AOP AOP(Aspect Oriented Programming)即面向切面编程,是一种编程思想,它把程序的业务逻辑和系统内部的非业务逻辑分离开来,以便更好地重用两部分逻辑,提高代码的灵活性和可维护性。 AOP的实现方式 AOP有多种实现方式,包括基于继承的方式、基于代理的方式等,但Spring框架采用的…

    html 2023年5月30日
    00
  • springmvc+shiro自定义过滤器的实现代码

    下面是“springmvc+shiro自定义过滤器的实现代码”的完整攻略: 一、前置知识 在开始本文的阅读之前,请确保您已经掌握了以下几个知识点: Spring MVC 框架的基本概念和使用方法; Shiro 框架的基本概念和使用方法; Spring MVC 和 Shiro 的集成方法。 如果您还不熟悉以上知识点,请先学习相关学习资料入门。 二、自定义过滤器…

    html 2023年5月31日
    00
  • psd文件怎么打开?用什么软件可以把它打开

    以下是“psd文件怎么打开?用什么软件可以把它打开”的完整攻略: PSD文件怎么打开? PSD文件是Photoshop软件的原生文件格式,如果需要打开PSD文件,可以按照以下步骤进行: 使用Photoshop软件打开:PSD文件是Photoshop软件的原生文件格式,可以直接使用Photoshop软件打开。 使用其他图像编辑软件打开:除了Photoshop软…

    html 2023年5月18日
    00
  • java使用dom4j生成与解析xml文档的方法示例

    接下来我会为您详细讲解“Java使用dom4j生成与解析XML文档的方法示例”: Dom4j简介 Dom4j是一个Java XML API。它是JAXP API之上一层的接口,可以解析XML文件以及生成新的XML文件。同时,它也支持XPath表达式。本文将通过两个示例来讲解使用Dom4j生成和解析XML文档的方法。 示例1:生成XML文档 以下是生成一个包含…

    html 2023年5月30日
    00
  • ASP同一站点下gb2312和utf-8页面传递参数乱码的终极解决方法

    下面我将详细讲解“ASP同一站点下gb2312和utf-8页面传递参数乱码的终极解决方法”的完整攻略。 问题描述 当一个ASP网站同时使用gb2312和utf-8编码方式时,将参数从一个页面传递到另一个页面时会出现乱码的问题。 解决方案 步骤一:设置页面编码方式 在页面头部设置编码方式为UTF-8,在页面中对传递的参数进行编码。 <!DOCTYPE h…

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