如何在laravel中使用shift-jis编码导出csv文件?

2024-03-26

我在用laravel excel https://laravel-excel.com/导出 csv 文件。要导出,代码如下,

 return Excel::download(new Export(results,$header), "test.csv");

Export.php 文件就像,

namespace App\AllClass;

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithHeadings;

class Export implements FromCollection,WithHeadings
{
    private $myArray;
    private $header;

    public function __construct($myArray,$header){
        $this->myArray = $myArray;
        $this->header = $header;
    }

    public function collection()
    {
        $data = mb_convert_encoding($this->myArray,"SJIS", "UTF-8");
        // dump($data);
        return collect($data);
    }


    public function headings(): array
    {
        $header = mb_convert_encoding($this->header,"SJIS", "UTF-8");
        // dump($header);
        return $header;
    }
}

如您所见,我在创建 Excel 之前转换数据。无需转换,我可以完美导出 UTF-8 格式。但转换为shift-jis后,它删除了所有日语字符。但是,如果我在返回之前转储标头,它会向我显示乱码数据;不是像 csv 文件那样的空字符串。


我解决了。
我在这里分享一下我的解决方案。
Laravel Excel 默认不支持。 但我们可以通过简单的方式做到这一点。

  1. 下载前获取 csv 内容:\Excel::raw

  2. 转换为另一种编码:mb_convert_encodinghttps://docs.laravel-excel.com/3.1/exports/collection.html#storing-raw-contents https://docs.laravel-excel.com/3.1/exports/collection.html#storing-raw-contents

  3. 下载 csv。

    $exportedObject= new \App\Exports\ClassExport($exportDataArray, $fileName);
    $csvContent = \Excel::raw($exportedObject, $exportedObject->writerType);

    $csvContent = mb_convert_encoding($csvContent, 'SJIS', '自动');

    // 就我而言,我将 csv 上传到 S3。 $storageInstance = \Storage::disk('s3_import_csvs');
    $putFileOnStorage = $storageInstance->put($fileName, $csvContent);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在laravel中使用shift-jis编码导出csv文件? 的相关文章

  • 将 CSV 文件导入 MySQL 数据库时出现无效的 UTF-8 字符串

    我正在尝试使用以下代码将 CSV 导入我的 MySQL 数据库 我从帖子中获取了 CSV 文件
  • 如何在python中查找csv文档中的特定行

    我想要做的是读入 csv 文档并找到 SN 列 gt 20 中的所有值 然后创建一个仅包含 SN gt 20 行的新文件 我知道我需要做 阅读原始文件 打开一个新文件 迭代原始文件的行 我能够做的是找到 SN gt 20 的行 import
  • Laravel 查询生成器:枢轴不在的地方

    wherePivotIn已提及here https laravel com docs 5 5 eloquent relationships many to many under 通过中间表列过滤关系 但我找不到任何有关相反功能的信息 As
  • Laravel 4:Facades 是如何解决的?

    我有点想看看 Laravel 4 发生了什么facades在引擎盖下 我们以这个 Facade 为例 File get someArgs 如果我没有记错的话 逐步 过于简化 的调用将是 static method invocation wh
  • Laravel项目部署到Cpanel时出现404错误如何解决?

    我正在尝试将我的 laravel Laravel Framework 7 28 3 部署到 Cpanel 但出现 404 错误 我将项目上传到 public html 修改了 index php 文件以指向正确的文件 如下所示 我认为ind
  • Python-从Excel文件读取时间时未获得正确的日期时间

    我有一个 Excel 文件 其中有 3 列作为日期时间或日期或时间字段 我正在通过阅读它xlrd包裹 我有时间milliseconds我想当我尝试将其转换回日期时间时我得到了错误的结果 我尝试将文件转换为csv以及 这也没有帮助 我得到了我
  • Laravel:将变量传递给多个视图

    我想动态地制作菜单 因此显示 本月电影 而不是 十二月电影 参见图片 十二月是每月更新的当前月份 我的问题是菜单不属于特定的路由 控制器 因此我无法像其他路由一样传递变量 例子 month Carbon now gt format F re
  • 如何在 Laravel 中存储非 php 文件的模板?

    我们可以存储PHP模板文件使用bladeLaravel 中的模板引擎 但是 我想在远程服务器上创建一个配置文件 每个文件包含 20 30 行以上 到目前为止 我一直在使用Perl 我曾经执行 Perl 文件 该文件用于将内容转储到一个文件中
  • 使用 \COPY 将带有 JSON 字段的 CSV 加载到 Postgres 中

    我正在尝试使用 COPY 命令将 TSV 数据从文件加载到 Postgres 表中 这是一个示例数据行 2017 11 22 23 00 00 id 123 class 101 level 3 这是我正在使用的 psql 命令 COPY b
  • 我应该在 laravel 5.1 中将模型保存事件监听器放在哪里

    Laravel 文档说我应该将模型事件放在EventServiceProvider boot 像这样的方法 public function boot DispatcherContract events Raisefund saved fun
  • 将 word2vec 模型查询的结果保存在 csv 文件中?

    我正在语料库上训练 word2vec 模型 然后查询该模型 这工作正常 但我正在运行一个实验 需要针对不同的条件调用模型 保存每个条件的模型 查询每个条件的模型 然后将查询的输出保存到 csv 文件中 例如进一步分析所有条件 我研究了 ge
  • 使用csv文件-PHP创建表到mysql时添加反引号

    我有一个 php 代码 它将使用 csv 文件创建一个到 mysql 数据库的表 然而 某些列标题没有被 mysql 读取 mysql 唯一一次读取查询是当我添加反引号 您能帮助我在查询中的何处添加反引号吗 这是我的代码 file C Us
  • 如何在控制器中获取 User()->id (Laravel 8+)

    我正在尝试通过以下方式选择任务用户身份 但我无法将其放入控制器 我从中选择数据DB 我尝试过很多事情 其中 一些来自堆栈溢出 但它不起作用 I tried 1 userId Auth check Auth id true 2 Auth us
  • 如何使用 Laravel Scheduler 命令将输出重定向到 STDOUT?

    我的调度程序应用程序运行到 Docker 容器中 Laravel 调度程序由主管管理并执行到容器中 我通过以下方式管理输出重定向 http veithen github io 2015 01 08 supervisord redirecti
  • AngularJS + Laravel 5 身份验证

    在使用 AngularJS 构建 SPA 时 我想在 AngularJS 网站中实现用户身份验证 但是 我不知道从哪里开始以及最佳实践是什么 基本上我有一个确定可以担任一个或多个角色 我寻找了一些例子 这样我就可以对如何正确处理这个问题有一
  • 如何在byte[]中制作csv?

    我想知道我应该如何创建一个在 byte 中创建 csv 文件的方法 目前我正在使用这样的东西 public byte makeCsv StringBuffer csv new StringBuffer csv append columnhe
  • 如何在flutter中从设备存储读取CSV文件

    我想将数据从 flutter 中的 CSV 文件导入到 firebase 数据库中 因此 我使用文件选择器从设备中选择 CSV 文件 现在我如何从该文件中读取数据 首先从 dart 包导入 file picker 和 CSV 包 比定义方法
  • Laravel 5.5 中的主从配置

    如何配置 Laravel 5 5 主从 MySQL 复制 我想分别在master和slave上进行写操作和读操作 可选 有没有办法在理想条件下进行连接池和打开连接的最大 最小数量 只需改变你的config database php文件包含读
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • 在 Laravel 视图中使用 CSS?

    我刚刚开始学习 Laravel 并且可以掌握控制器和路由的基础知识 我的操作系统是 Mac OS X Lion 它位于 MAMP 服务器上 我的routes php代码 Route get function return View make

随机推荐

  • 错误类“HTML”未找到 - Laravel 5.4

    我收到以下错误 未找到 HTML 类 查看 C WORK Software XamppOne htdocs APOSTXUI ContractorsClubField resources views includes header blad
  • 将表格添加到 ggplot 图

    我有剂量反应数据 df lt data frame dose c 10 0 625 2 5 0 15625 0 0390625 0 0024414 0 00976562 0 00061034 10 0 625 2 5 0 15625 0 0
  • 无法删除 Android Studio 中的目录

    当我运行项目时安卓工作室2 0它显示以下错误 错误 任务 app clean 执行失败 gt 无法删除 目录 XX build outputs apk 在 android studio 终端中 转到项目根目录并使用命令 gradlew cl
  • SQL Server:将多行数据合并为一行

    我想要做的是合并几行数据 以便从 Transact SQL 或 SSIS 中显示为单行 例如 MAKE REF ID Title Surname Forename DOB Add1 Postcode D 10 MR KINGSTON NUL
  • 如何让在 MacOS 上运行的 Flutter 项目成功使用 Firestore?

    我有一个简单的 Flutter 项目 它所做的只是连接到 Firestore 集合 提取一些文档并显示它们 这在 iOS 上运行良好 但是 当我尝试在 macOS 中运行它时 我无法检索文档 我没有看到任何例外 只是没有成功 我从最初的默认
  • 何时在 Angular 2 中使用 @angular 标签? [复制]

    这个问题在这里已经有答案了 我试图使用下面的代码来引导我的应用程序boot ts file import bootstrap from angular2 platform browser import ROUTER PROVIDERS fr
  • git Push 因 git-credential-winstore 失败

    我认为 git credential winstore 应用程序存在问题 我正在尝试存储凭据 以便不必每次都输入它们 我已经在一台计算机 我的个人笔记本电脑 上完成了此过程 并且运行完美 但是当我尝试在工作计算机上重复此过程时 它失败了 我
  • 使用 liquibase 创建双精度[]类型的列

    如何在postgresql数据库中使用liquibase创建双精度 双精度数组 类型的列
  • 在 FtpWebRequest 中设置端口

    我需要用户能够修改下载 FTP 信息的端口 但我找不到在 FtpWebRequest 中更改此端口的方法 该端口不是用于创建 Web 请求的 URI 的一部分吗 FtpWebRequest request FtpWebRequest Web
  • 在 VB.net 中读取 XML

    我在谷歌上搜索了大约一个小时 但没有运气 我想我也是一个很棒的谷歌用户 所以我在这里 我有一个用于程序设置的 XML 文件 它看起来像这样
  • Apollo:数据/突变道具未传递给组件

    我有以下带有查询和突变的组件 但我的组件没有接收数据和突变道具 我的代码中是否做错或遗漏了什么 虽然查询确实被执行 但它只是没有被传递下去 this props mutate 以及 this props data 未定义 class Res
  • 绘制一天内具有不同时间戳和 datetime.time 格式的时间序列

    我有两个包含温度和光传感器读数的数据集 测量时间为 22 35 41 04 49 41 此数据集的问题在于 当从一天到另一天 22 35 41 04 49 41 进行测量时 要根据 datetime date 格式绘制测量值 绘图功能自动从
  • 如何反转 SQL Server 2008 中的字段

    如何反转 SQL Server 2008 中的字段 select reverse abcdef fedcba 1 row s affected
  • IE 中文本大小列表的实际像素是多少?

    与 IE 中的以下文本大小列表相比 实际字体大小 以像素为单位 是多少 Largest Larger Medium Smaller Smallest 在 Web 应用程序中 我需要提供类似的行为 通过选择上面列表中的任何一个来设置应用程序控
  • 将 FFTW 链接到 Android NDK 应用程序

    我目前正在编写一个流派分类应用程序 作为我计算机工程的最后一年项目 我最初用 C 语言编写了特征提取代码 实现 FFTW 现在我需要通过 NDK 在 Android 上实现它 这是我的第一个 NDK 项目 所以我仍在掌握一些东西 但我已经根
  • 如何在linux中包含python模块?

    我发现了这个 xgoogle python 模块http github com pkrumins xgoogle http github com pkrumins xgoogle 很有意思 我到底应该如何在 Linux 中包含或安装这些文件
  • 单个模块/函数等有超过 1 个文档字符串吗?

    我正在使用 python 3 1 是否可以为单个模块或函数创建超过 1 个文档字符串 我正在创建一个程序 并且打算拥有多个文档字符串 每个文档字符串都有一个类别 我打算向其他人提供该程序 以便他们可以使用它 并且为了让程序员和非程序员都轻松
  • 如何在 Quickblox iOS SDK 中检查会话是否有效或过期?

    我知道 任何会话在向 Quickblox 服务器发出最后一个请求 2 小时前发出 后都会过期 当我创建会话时 我能够找到 QBBaseModule sharedModule tokenExpirationDate但我不确定它是如何工作的以及
  • PHP:通过引用可变长度参数列表?

    是否可以创建一个 PHP 函数 该函数采用可变数量的参数 所有参数均通过引用 它对通过引用接收值数组的函数和将其参数包装在对象中的函数没有帮助 因为我正在研究函数组合和参数绑定 也不要考虑调用时间传递引用 那东西根本不应该存在 PHP 5
  • 如何在laravel中使用shift-jis编码导出csv文件?

    我在用laravel excel https laravel excel com 导出 csv 文件 要导出 代码如下 return Excel download new Export results header test csv Exp