Xavxls — это расширение PHP для чтения файлов формата XLS. Оно не поддерживает запись, но может быть полезно при работе с большими файлами Excel.
В январе 2017 года проект был рекомендован на OSC (Open Source China). Автор проекта был очень взволнован этим событием.
Компиляция и установка среды разработки:
Структура каталогов Xavxls:
Компиляция PHP-CPP:
Компиляция libxls:
Пример программы read_xls.c: Программа считывает данные из файла Excel и выводит их на экран.
#include <stdio.h>
#include <stdlib.h>
#include <xls.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char **argv) {
xlsWorkBook *pWb;
xlsWorkSheet *pWs;
struct st_row_data *row;
int r,c;
char buf[512], result[512];
if (argc < 2) {
fprintf(stderr, "please input the xml file.");
return EXIT_FAILURE;
}
pWb = xls_open(argv[1], "UTF-8");
if (NULL == pWb) {
fprintf(stderr, "File not found!\n");
return EXIT_FAILURE;
}
...
}
Установка Xavxls:
Добавление расширения Xavxls в PHP.ini: Добавьте строку extension=Xavxls.so в файл PHP.ini.
Почему был разработан Xavxls?
Если вы разрабатываете на PHP и часто работаете с файлами Excel, то знаете, что большие файлы могут замедлять работу приложения и требовать больше памяти. Это может привести к увеличению времени выполнения запросов и даже к сбоям. Xavxls решает эту проблему, предоставляя быстрое и эффективное расширение для работы с XLS-файлами.
Интерфейсы Xavxls:
Метод | Описание |
---|---|
setfilename() | Устанавливает имя файла для обработки. |
inititerator() | Инициализирует итератор для листа. |
getversion() | Возвращает версию расширения. |
getsheetname() | Получает имя листа по его номеру. |
getsheetcount() | Возвращает количество листов в файле. |
GetRowCount() | Получает количество строк на листе. |
GetColCount() | Получает количество столбцов на листе. |
GetCell() | Получает значение ячейки по её координатам. |
Тестирование:
Автор статьи провёл тестирование, которое показало, что использование Xavxls позволяет работать с большими файлами Excel без проблем с памятью. ``` Классы/PHPExcel.php; $PHPExcel = new PHPExcel(); $PHPReader = null;
include "Классы/PHPExcel/Reader/Excel5.php";
$PHPReader = new PHPExcel_Reader_Excel5();
$PHPExcel = $PHPReader->load('1.xls');
$currentSheet = $PHPExcel->getSheet(0);
$allColumn = $currentSheet->getHighestColumn();
$allRow = $currentSheet->getHighestRow();
for($rowIndex=2;$rowIndex<=$allRow;$rowIndex++){
$data = array(); //Цикл для чтения содержимого каждой ячейки. Обратите внимание, что строки начинаются с 1, а столбцы с A.
for($colIndex='A';$colIndex<=$allColumn;$colIndex++){
$addr = $colIndex.$rowIndex;
$cell = $currentSheet->getCell($addr)->getValue();
}
}
$endtime = explode(' ',microtime());
$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
$thistime = round($thistime,3);
echo "Время выполнения:".$thistime." секунд".time();
echo "Потребление памяти:".memory_get_usage();
Использование xavxls показывает время выполнения: 39.002 секунды. Потребление памяти: 358000
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )