PhpSpreadsheet - 如何确定一个数字是否被格式化为文本?

PhpSpreadsheet - how to determine if a number is formatted as text?

我有一个简单的电子表格,其中的数字格式为文本:

我想使用 PhpSpreadsheet 来确定数字确实被格式化为文本而不是默认的 "General"。所以我这样做:

<?php

use PhpOffice\PhpSpreadsheet\IOFactory;

require 'vendor/autoload.php';

$reader = IOFactory::createReader('Xlsx');
$reader->setReadDataOnly(TRUE);

$cell = $reader->load('index.xlsx')->getActiveSheet()->getCell('A1');
var_dump($cell->getValue(), $cell->getStyle()->getNumberFormat()->getFormatCode());

但结果总是这样:

float(12345)
string(7) "General"

如何判断号码格式是否为"Text"?

你在你的reader代码中写'$reader->setReadDataOnly(True);',这意味着在你的reader代码中读出没有格式化的纯数据.参见 documentation

请参阅代码的第 5 行。

你应该使用

$reader->setReadDataOnly(FALSE);

你应该能够从 excel 文件中读出格式信息。

 $format = $sheet->getStyle("A1")->getNumberFormat()->getFormatCode();