PHP 从 xlsx 生成的页面的千位分隔符格式

PHP thousand separator formatting for generated page from xlsx

ty mail2bapi, :)

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

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

IM 与 PHP 关系不佳,非常感谢任何帮助

另外一些列是空的,日期是 2020 年 1 月 23 日,我认为这就是导致问题的原因

XMLS File simplexlsx

错误:number_format() 期望参数 1 为双精度,

中给出的数组

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

<?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();
}

?>

您没有正确使用 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();
}

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