广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP结合vue导出excel出现乱码的解决方法分享
  • 615
分享到

PHP结合vue导出excel出现乱码的解决方法分享

PHP导出excel出现乱码PHP乱码PHPexcel乱码 2023-02-03 12:02:07 615人浏览 安东尼
摘要

在这之前我们先回顾以前用PHP导出excel,我直接写成方法在这里: public static function phpExcelList($field, $list, $titl

在这之前我们先回顾以前用PHP导出excel,我直接写成方法在这里:

public static function phpExcelList($field, $list, $title='文件',$file_time){
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        foreach ($list as $key => $value) {
            foreach ($field as $k => $v) {
                if ($key == 0) {
                    $sheet->setCellValue($k . '1', $v[1]);
                }
                $i = $key + 2; //表格是从2开始的
                $sheet->setCellValue($k . $i, $value[$v[0]]);
            }
        }
        
        ob_clean();
        header("Content-type:application/vnd.ms-excel;charset=UTF-8");
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'.$title.'.csv"');
        header('Cache-Control: max-age=0');
        $writer = new Csv($spreadsheet);
        $writer->save('php://output');
        exit;
    }

一般有设置charset基本在前端就没啥问题,问题就在于Vue导出时就出现乱码了,有可能是这个,大多数网友的解决方案就是在请求里边加上参数:responseType: 'blob', // 表明返回服务器返回的数据类型,但这里我已经提前申明返回的数据是正常的,这时候又会咋样呢?

咱们试试用国产的wps打开吧:

咦?没问题?再用office打开:啊哈》》?what?

那问题出在哪里呢?读入的文件是utf-8格式,下载下来Excel打开乱码,但是用其他编辑器打开并不是乱码,一开始解决问题的思路是,下载文件的时候,是不是没有指定编码方式,导致文件编码方式不对,于是乎使用了Blob里的type参数,硬塞了一个类型以及编码方式,但是这种方法似乎并不管用,仔细读了官方文档之后,关于type的解读如下:

type,默认值为 “”,它代表了将会被放入到blob中的数组内容的MIME类型。

这里明确表明,此type只是一个类型标记,并不会起到转码的作用,想想也是,blob仅仅是内存里开辟的0,1代码,怎么可能在下载的过程中去解码编码呢?

发现这其实是微软家的坑,微软家发明了一个东西叫bom头,关于bom头:

类似windows自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入UTF-8 BOM头。记事本等编辑器通过它来识别这个文件是否以UTF-8编码(当然即便没有UTF-8 BOM头记事本也能通过其它方式正确识别UTF-8编码)。

那么如果一个UTF-8编码的字符串的开头处没有BOM头又会发生什么?答:不认识你,乱码给你看

所以我们在这需要手动加一个微软看得懂的BOM头:

window.URL.createObjectURL(new Blob(['\uFEFF' + content]))

总的代码示例如下,不懂可以直接抄:

this.$Http.get(common.webapi+'/api/exportExcel',{params:{参数名称:参数值}}, {emulateJSON:true,responseType: 'blob'}).then((res)=>{
              if(res.data){
              const link = document.createElement('a');// 创建a标签
              let blob = new Blob(['\uFEFF' + res.data],{type: 'application/vnd.ms-excel;'}); // 设置文件类型并在返回值前加bom头,避免乱码
              link.style.display = "none";
              link.href = URL.createObjectURL(blob); // 创建URL
              link.setAttribute("download", "数据"+ this.$moment(new Date().getTime()).fORMat("YYYY-MM-DD")+'.csv');
              document.body.appendChild(link);
              link.click();
              document.body.removeChild(link);
              //如果不会出现乱码,直接一句代码搞定:this.$fileDownload(res.data, "发票数据"+ this.$moment(new Date().getTime()).format("YYYY-MM-DD")+'.csv')
             }
           
          })

//如果不会出现乱码,直接一句代码搞定:this.$fileDownload(res.data, "数据"+ this.$moment(new Date().getTime()).format("YYYY-MM-DD")+'.csv'),接下来就是见证奇迹的时刻:

到此这篇关于PHP结合vue导出excel出现乱码的解决方法分享的文章就介绍到这了,更多相关PHP导出excel出现乱码内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PHP结合vue导出excel出现乱码的解决方法分享

本文链接: https://www.lsjlt.com/news/194118.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP结合vue导出excel出现乱码的解决方法分享
    在这之前我们先回顾以前用php导出excel,我直接写成方法在这里: public static function phpExcelList($field, $list, $titl...
    99+
    2023-02-03
    PHP导出excel出现乱码 PHP 乱码 PHP excel乱码
  • 【黄啊码】PHP结合vue导出excel乱码
    在这之前我们先回顾以前用php导出excel,我直接写成方法在这里: public static function phpExcelList($field, $list, $title='文件',$file_time){ $s...
    99+
    2023-09-17
    vue.js php excel
  • java中excel导出乱码解决方法
    错误方式:response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.getBytes(),"utf-8")); String file...
    99+
    2016-02-24
    java 乱码
  • java导出excel时出现文件名乱码解决方法
    java解决导出Excel时文件名乱码的方法示例:(推荐:java视频教程)String agent = request.getHeader("USER-AGENT").toLowerCase(); response.setConte...
    99+
    2021-11-16
    java
  • java导出excel乱码原因及解决方法
    java导出错误方式与正确方法:(推荐:java视频教程)错误方式: response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.get...
    99+
    2015-10-16
    java基础 java
  • java导出excel乱码解决方法及原因
    java导出错误方式与正确方法:(推荐:java视频教程)错误方式: response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.get...
    99+
    2019-01-11
    java
  • mac php导出excel乱码的解决丰富
    这篇文章主要介绍“mac php导出excel乱码的解决丰富”,在日常操作中,相信很多人在mac php导出excel乱码的解决丰富问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mac php导出excel乱...
    99+
    2023-06-20
  • 如何解决Vue.js导出Excel出现乱码的问题
    Vue.js是一款流行的前端 JavaScript 框架。在Vue.js开发中,使用二进制文件来导出Excel文件时,可能会遇到Excel乱码的问题。这篇文章将通过介绍二进制编码的概念和解决方案来帮助大家解决Vue.js导出Excel出现乱...
    99+
    2023-05-14
  • 如何解决Vue结合后台导入导出Excel的问题
    这篇文章将为大家详细讲解有关如何解决Vue结合后台导入导出Excel的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。导出Excel功能这里不谈别人怎么实现的,我是从后...
    99+
    2022-10-19
    vue excel
  • java导出文件出现文件名乱码解决方法
    出现的问题:在chrome浏览器中导出的excel文件名没有出现中文乱码的情况,在测试IE浏览器的时候,导出的文件名乱码了。解决方法:原来的代码:try { response.setContentType("appl...
    99+
    2015-07-21
    java 乱码
  • superset导出乱码及导出报错问题的解决方法
    导出乱码问题的解决方法:1. 检查字符编码:确保导出的文件使用的字符编码与当前系统中使用的字符编码一致。可以尝试使用UTF-8编码格...
    99+
    2023-09-13
    superset
  • myeclipse导入java项目出现乱码的解决方法
    一、将整个project设置编码UTF-8(UTF-8可以最大的支持国际化):windows->Preferences->general->Workspace->Text file encoding->Other框中的Text file e...
    99+
    2018-09-22
    java入门 myeclipse 导入 java 项目 乱码 解决方法
  • MYSQL导入数据时出现乱码的解决方法
    小编给大家分享一下MYSQL导入数据时出现乱码的解决方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!MYSQL导入数据时出现乱码的解决办法:1、通过修改mysql安装文件中【my.ini】中...
    99+
    2022-10-18
    mysql
  • php汉语代码出现乱码的解决方法
    小编给大家分享一下php汉语代码出现乱码的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!解决方法:使用header函数设置页面显示的文字编码,例“header("Content-Type:text/htm...
    99+
    2023-06-08
  • php输出csv乱码的解决方法
    这篇“php输出csv乱码的解决方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php输出csv乱码的解决方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让...
    99+
    2023-06-06
  • php导出csv中文乱码的解决方法是什么
    本篇内容介绍了“php导出csv中文乱码的解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php导出csv中文乱码的解决办法:1...
    99+
    2023-06-25
  • php验证码输出乱码的解决方法
    小编给大家分享一下php验证码输出乱码的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php验证码输出乱码的解决办法:1、检查并修改访问验证码生成方法函数...
    99+
    2023-06-08
  • php页面输出乱码的解决方法
    小编给大家分享一下php页面输出乱码的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php页面输出乱码的解决办法:1、php文件编码和网页输出编码设置成一致;2、php文件编码和数据库存储的字符编码设置为一致;3、...
    99+
    2023-06-14
  • php模板类出乱码的解决方法
    这篇文章主要介绍了php模板类出乱码的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php模板类出乱码的解决办法:1、检查引用模板的PHP文件;2、设置该文件跟htm...
    99+
    2023-06-22
  • php变量输出乱码的解决方法
    这篇文章主要介绍了php变量输出乱码的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php变量输出乱码的解决办法:1、通过“iconv("GB23...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作