1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xavier007-Xavxls

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Xavxls — это расширение PHP для чтения файлов формата XLS. Оно не поддерживает запись, но может быть полезно при работе с большими файлами Excel.

В январе 2017 года проект был рекомендован на OSC (Open Source China). Автор проекта был очень взволнован этим событием.

Компиляция и установка среды разработки:

  • Структура каталогов Xavxls:

    • phpcpp — исходный код PHP-CPP SDK, который позволяет быстро разрабатывать расширения PHP с использованием C++.
    • libxls — библиотека C для чтения XLS-файлов.
    • xavxls — исходный код проекта Xavxls.
  • Компиляция PHP-CPP:

    1. Клонируйте репозиторий:
    2. Перейдите в каталог phpcpp:
      • cd phpcpp
    3. Соберите программу:
      • make
    4. Установите программу:
      • sudo make install
  • Компиляция libxls:

    1. Добавьте права на выполнение к файлу configure:
      • chmod +x configure
    2. Сконфигурируйте и соберите библиотеку:
      • ./configure
      • make
    3. Установите библиотеку:
      • sudo make install
    4. Скопируйте файлы заголовков и библиотеки в системные каталоги:
      • cp -r -v /usr/local/libxls/include/libxls/ /usr/include
      • cp -r -v /usr/local/libxls/lib/ /usr/lib
      • cp -r -v /usr/local/libxls/include/xls.h /usr/include
  • Пример программы 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:

    1. Клонируйте репозиторий:
    2. Переключитесь на каталог xavxls:
      • cd xavxls
    3. Скомпилируйте программу:
      • make
    4. Установите программу:
      • sudo make install
  • Добавление расширения 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
'; $starttime = explode(' ',microtime()); echo microtime(); $xav = new Xavxls(); $xav->setfilename('1.xls','UTF-8'); $xav->inititerator(0); echo $col = $xav->GetColCount(0); echo $row = $xav->GetRowCount(0); for($i=1;$iGetCell(0,$i,$j); } } $endtime = explode(' ',microtime()); $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]); $thistime = round($thistime,3); echo "Время выполнения:".$thistime." секунд".time(); echo "Потребление памяти:".memory_get_usage(); Для Excel размером 1-2M обработка занимает всего 0,2-0,4 секунды, в то время как использование phpexcel требует нескольких секунд. 358000 байт = 0,341415 Мбайт памяти. Использование xavxls позволяет обрабатывать Excel размером 14,6 Мбайт, потребляя при этом очень мало памяти и обеспечивая быструю скорость обработки. TODO Добавить поддержку xlsx Добавить поддержку формул ```

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Расширение для чтения файлов Excel в формате XLS на PHP, в настоящее время поддерживается только формат XLS. Примечание: пожалуйста, следуйте инструкциям по использованию, не загружайте пакет с сайта libxls, так как официальная версия может не совпадать с версией, используемой при разработке xavxls. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xavier007-Xavxls.git
git@api.gitlife.ru:oschina-mirror/xavier007-Xavxls.git
oschina-mirror
xavier007-Xavxls
xavier007-Xavxls
master