【问题标题】:PHP thousand separator formatting for generated page from xlsx从 xlsx 生成的页面的 PHP 千位分隔符格式
【发布时间】:2020-05-29 21:36:53
【问题描述】:

Ty mail2bapi, :)

我在代码中使用SimpleXLSX 和下面的示例脚本我添加了这个$x = number_format($r);

只需要数字有千位分隔符 252252732 到 252,252,732

我不擅长 PHP,非常感谢任何帮助

加上一些列是空的,日期像这样 23.01.2020,我认为这是导致问题的原因

XMLS File simplexlsx

错误:number_format() 期望参数 1 为 double,数组中给出

错误:implode():传递的参数无效

<?php
require_once 'SimpleXLSX.php';

if ( $xlsx = SimpleXLSX::parse('book.xlsx') ) {
    echo '<table border="1" cellpadding="3" style="border-collapse: collapse">';
    foreach( $xlsx->rows() as $r ) {
        $x = number_format($r);
        echo '<tr><td>'.implode('</td><td>', $x ).'</td></tr>';
    }
    echo '</table>';
    // or $xlsx->toHTML();  
} else {
    echo SimpleXLSX::parseError();
}

?>

【问题讨论】:

    标签: php formatting xlsx export-to-html


    【解决方案1】:

    您没有正确使用 number_format() 函数。更改以下代码 -

    $x = number_format($r);
    

    $x = number_format($r, 0, ".", ",");
    

    欲了解更多信息,请访问PHP number_format

    编辑

    正如您提到的,您的行可能有不同类型的值,最好检查数值的值。

    试试这个代码

    <?php
    require_once 'SimpleXLSX.php';
    
    if ( $xlsx = SimpleXLSX::parse('book.xlsx') ) {
         echo '<table border="1" cellpadding="3" style="border-collapse: collapse">';
        foreach( $xlsx->rows() as $rowValue ) {
           echo "<tr>";
           // As $rowValue is an array  
           foreach($rowValue as $value){
              // Check for number_format
              if(is_numeric($value)){
                $x = number_format($value, 0, ".", ",");
                echo "<td>".$x."</td>";
              }else{
                echo "<td>".$value."</td>";
              }
           }
           echo "</tr>";  
        }
        echo "</table>";
    
        // or $xlsx->toHTML();  
    } else {
        echo SimpleXLSX::parseError();
    }
    

    希望这些能解决您的问题。

    【讨论】:

    • 仍然给出相同的错误“警告:number_format() 期望参数 1 为双精度,数组中给出”加上某些列是空的或数字短以进行格式化。
    • 你能显示 print_r($r); 的输出吗?将它放在 foreach 循环的下方。
    • Array ( [0] => 20.03.2020 [1] => [2] => [3] => [4] => [5] => ) 3 列,一行包含日期,一行包含数以百万计的数字,第三列是空的。我们需要它来忽略日期 23.01.2020 :(
    • 嗨,它有,为 foreach() 提供的参数无效。如果有帮助,我添加了 xml 的 dl 链接?
    • 由于 foreach 循环中的变量 $r,您得到了错误。将其替换为 $rowValue 或复制更新的代码。现在应该好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2011-03-12
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多