PHPSReadSheet-如何确定数字是否格式化为文本?

PHPSReadSheet-如何确定数字是否格式化为文本?,php,spreadsheet,phpspreadsheet,Php,Spreadsheet,Phpspreadsheet,我有一个简单的电子表格,数字格式为文本: 我想使用PhpSpreadsheet来确定数字是否确实被格式化为文本,而不是默认的“General”。所以我这样做: 您在读卡器代码“$reader->setReadDataOnly(True);”中编写它,这意味着在读卡器代码中读取纯数据时不使用out-formmating。看 请参阅代码的第5行 你应该使用 $reader->setReadDataOnly(FALSE); 您应该能够从excel文件中读出格式化信息 $format = $

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

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


您在读卡器代码“$reader->setReadDataOnly(True);”中编写它,这意味着在读卡器代码中读取纯数据时不使用out-formmating。看

请参阅代码的第5行

你应该使用

$reader->setReadDataOnly(FALSE);
您应该能够从excel文件中读出格式化信息

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

作为测试,再次使用Excel打开文件,将值从
12345
更改为
12346
,保存文件,然后再次测试。当我这样做的时候,我得到了正确的结果。@SeanBright这没有帮助,仍然是“一般”。我使用LibreOffice而不是MS Office,所以这可能是一个因素。我想看看我是否能得到一个微软Office的试用版来试用,但这最终是没有用的,因为这个问题是基于用户的问题,我不能要求微软的软件。同意,我只是告诉你什么对我有用。
PHPOffice/PhpSpreadsheet
存储库中有一个文件将我带到了这个路径。这就是我正在使用的,但是
getFormatCode
返回“General”,这就是重点。您应该尝试设置
$reader->setReadDataOnly(FALSE)以“@”的形式对数字进行格式化,您对读者说,只读取puredate而不进行格式化。然后,读者只返回一般值,因为我没有必要设置它。我必须知道用户在哪里使用Excel或LibreOffice设置它。你可以在你的阅读器代码“$reader->setReadDataOnly(True);”中编写它在你的阅读器代码中。如果您告诉phpspredsheet它应该只使用数据,您将不会看到任何用户格式。请参阅代码第5行。对,这很有意义。我稍后会尝试(我现在正在工作,家里有测试文件)并发布结果。谢谢