【问题标题】:Laravel excel export - string formatted column showing as numberLaravel excel 导出 - 字符串格式的列显示为数字
【发布时间】:2016-09-12 06:34:53
【问题描述】:

在 localhost 中,我可以将列格式设置为 PHPExcel_Cell_DataType::TYPE_STRING,它的工作正常是使用此类型的 .xls 文件

如果我在现场进行测试,我会得到类似的东西

列值设置为0

为什么我尝试PHPExcel_Cell_DataType::TYPE_STRING 格式是因为像65081035703021 这样的字符串在ms-excel 中显示为数字(以10 为底)

我怎么了?

【问题讨论】:

  • 我的猜测是 32 位 PHP 在现场,64 位 PHP 在开发中
  • 但是显示科学格式浮点数与单元格使用 STRING 而不是 NUMERIC 数据类型无关,这是单元格格式屏蔽问题;默认情况下,您使用的是通用格式掩码,并且可能应该使用00000000000000 之类的掩码强制显示所有数字
  • @MarkBaker 谢谢:),似乎第一条评论是原因,对于第二条评论,我已将列格式化为#0,正如您在github.com/Maatwebsite/Laravel-Excel/issues/613 中建议的那样,现在它工作得很好,请分享一个不接受的答案,谢谢
  • 如何在标题中设置背景色?

标签: php excel laravel-5.1 maatwebsite-excel


【解决方案1】:

试试这个代码

namespace App\Exports;

use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithMapping;

class InvoicesExport implements WithColumnFormatting, WithMapping
{
    public function map($invoice): array
    {
        return [
            $invoice->invoice_number,
            Date::dateTimeToExcel($invoice->created_at),
            $invoice->total
        ];
    }

    public function columnFormats(): array
    {
        return [
            'B' => NumberFormat::FORMAT_DATE_DDMMYYYY,
            'C' => NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE,
        ];
    }
}

Reference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多