PHP тысяча форматирования разделителя для сгенерированной страницы из xlsx - PullRequest
0 голосов
/ 14 февраля 2020

Ty mail2bapi,:)

Я использую SimpleXLSX и пример сценария ниже в коде, я добавил это $x = number_format($r);

Просто нужно, чтобы числа имели разделитель тысяч от 252252732 до 252,252,732

IM не очень хорош с PHP, очень признателен за любую помощь

Плюс некоторые столбцы пусты и даты вроде 23.01.2020, я думаю, что именно это вызывает проблему

Файл XMLS simplexlsx

Ошибка: number_format () ожидает, что параметр 1 будет двойным, массив задан в

Ошибка: 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();
}

?>

1 Ответ

0 голосов
/ 14 февраля 2020

Вы неправильно используете функцию number_format (). Измените следующий код с -

$x = number_format($r);

на

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

для получения дополнительной информации посетите PHP number_format

РЕДАКТИРОВАТЬ

Поскольку вы упомянули, что ваша строка может иметь значения другого типа, лучше проверить значение для цифры c.

Попробуйте этот код

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

Надеюсь, что это решит вашу проблему.

...