Экспорт из PHP в Excel - PullRequest
       5

Экспорт из PHP в Excel

6 голосов
/ 24 октября 2010

Мне нужно экспортировать данные из php в Excel и иметь возможность форматировать различные элементы в таблице Excel.

На данный момент лучшая библиотека, которую я нашел, это PHPExcel . Однако это кажется очень тяжелым и несколько медленным. Конечно, это очень мощный.

Есть ли что-нибудь более легкое и быстрое, что позволяет мне экспортировать в excel и иметь возможность применять простое форматирование (полужирный, выравнивание, границы)?

Ответы [ 2 ]

4 голосов
/ 24 октября 2010

Я только что закончил с этим вчера.Используя PHPExcel, у меня не было проблем с чтением «основного» документа с форматированием, записью 20–100 строк контента и сохранением файла (я сохраняю его «на экран» для немедленной загрузки. Хотя некоторые люди на форумах жаловались наскорость и накладные расходы, я отправляю много данных в свою сторону, и у меня нет никаких проблем с тем, что они делают.

Обратите внимание, что где-то я читаю, чтобы делать стили в серии, а не в циклахкогда это возможно. Например, стиль a1: a50 в отличие от * 1003. * в цикле. По-видимому, два разных сценария имеют очень разные значения памяти.

Единственное, что я обнаружил, было несколько причуд между выводом ичтение файлов Excel 2003. Если вы полностью работаете с файлами XLSX, они должны работать точно так же, как описано в документации.

0 голосов
/ 04 мая 2018

Вот простая функция генерации файла Excel, очень быстрая и точно .xls файл.

$filename = "sample_php_excel.xls";
$data = array(
array("User Name" => "Abid Ali", "Q1" => "$32055", "Q2" => "$31067", "Q3" => 32045, "Q4" => 39043),
array("User Name" => "Sajid Ali", "Q1" => "$25080", "Q2" => "$20677", "Q3" => 32025, "Q4" => 34010),
array("User Name" => "Wajid Ali", "Q1" => "$93067", "Q2" => "$98075", "Q3" => 95404, "Q4" => 102055),
);
to_xls($data, $filename);

function to_xls($data, $filename){
$fp = fopen($filename, "w+");
$str = pack(str_repeat("s", 6), 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); // s | v
fwrite($fp, $str);
if (is_array($data) && !empty($data)){
    $row = 0;
    foreach (array_values($data) as $_data){
        if (is_array($_data) && !empty($_data)){
            if ($row == 0){
                foreach (array_keys($_data) as $col => $val){
                    _xlsWriteCell($row, $col, $val, $fp);
                }
                $row++;
            }
            foreach (array_values($_data) as $col => $val){
                _xlsWriteCell($row, $col, $val, $fp);
            }
            $row++;
        }
    }
}
$str = pack(str_repeat("s", 2), 0x0A, 0x00);
fwrite($fp, $str);
fclose($fp);
}

function _xlsWriteCell($row, $col, $val, $fp){
if (is_float($val) || is_int($val)){
    $str  = pack(str_repeat("s", 5), 0x203, 14, $row, $col, 0x0);
    $str .= pack("d", $val);
} else {
    $l    = strlen($val);
    $str  = pack(str_repeat("s", 6), 0x204, 8 + $l, $row, $col, 0x0, $l);
    $str .= $val;
}
fwrite($fp, $str);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...