【问题标题】:All cells like strings PHP Excel所有单元格,如字符串 PHP Excel
【发布时间】:2015-09-01 10:45:45
【问题描述】:

我正在尝试从 excel 文件中读取一些数据。如果我的 excel 单元格中有 ex.50.44%,一切都很好 PHP excel 格式它就像 float 0.0531 我不想格式化任何数字,我希望所有单元格都被转换为字符串。在制作数据 toArray();

这是我的示例代码

try {
    $objPHPExcel = PHPExcel_IOFactory::load($upload_url);
} catch(Exception $e) {
    die('Error loading file "'.pathinfo($upload_url,PATHINFO_BASENAME).'": '.$e->getMessage());
}

 $objPHPExcel->getDefaultStyle()
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);


$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
var_dump($sheetData);
exit;

任何帮助将不胜感激。

【问题讨论】:

    标签: php phpexcel phpexcelreader


    【解决方案1】:

    如果您只是想将所有值作为字符串而不是适当的数据类型,则按照您目前的操作检索您的数组,然后执行:

    array_walk_recursive(
        $sheetData,
        function (&$value) {
            $value = (string) $value;
        }
    );
    

    【讨论】:

    • 这些值已经被格式化和损坏。 'O' => 字符串'0.1096'(长度=6)'P' => 字符串'0.2955'(长度=6)'Q' => 字符串'0.3065'(长度=6)'R' => 字符串'0.3198 ' (length=6) 原始值为50.44%,在数组中为0.531
    • 删除$objPHPExcel->getDefaultStyle() ->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);,因为这会破坏格式。否则,您是否正在做任何其他可能会禁用格式化的事情? (例如设置loadDataOnly(true) 或类似的?
    • 我想禁用格式化。我不希望 PHP excel 格式化我的单元格值。在我的 .xls 文件值的单元格中,我有 50.44% 和 PHP excel 格式为 0.05311。我也试过没有 $objPHPExcel->getDefaultStyle() ->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
    • MS Excel 中存储的值是0.05311.... MS Excel 使用“数字格式掩码”将该值显示为50.44%.... PHPExcel 完全一样,除非你改变了掩码.....所以不要试图通过设置你自己的格式代码来覆盖那个掩码......如果你禁用格式化",或者更改格式掩码,那么你永远不会得到50.44%
    • 那么我怎样才能得到原始值呢?
    猜你喜欢
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2011-08-04
    • 1970-01-01
    • 2013-02-15
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多