Zakkis.PHP.Excel.Parser.Pro.v4.5 http://www.zakkis.ca/products/abc_excelparser/index.php Вам нужен скрипт, который может читать MS файлы Excel и сохранять данные в базе данных, HTML страницах и и т.д.? Вы хотите делать это используя PHP под Unix и Linux, но без того, чтобы использовать инструментальные средства Windows напоподобии COM? Тогда PHP Excel PARSER - для Вас. Все, в чем Вы будете нуждаться - это только наш excel.php и PHP сервер без установки дополнительных инструментальных средств. Профессиональная версия PHP Excel Parser, имеет функцию отладки, поддержки мульти шрифтов Excel и обработки формул! Скрипт также корректно обрабатывает дату предшествующую 01.01.1970! Что является новым в 4.0 версии: Возможность поддерживать MAC файлы Excel Что является новым в 4.5 версии: Исправлены некоторые ошибки в версии 4.0 (программа работает значительно быстрее) Исправлены ошибки в документации(данный файл) Исправлены примеры Описание: Parser - может импортировать данные версий файла Excel от Excel 5.0 до Excel 2000 и XP. При этом только строки и числа будут импортированы. Строка может быть в сжатом unicode (8-bits символ) или несжатом unicode (16-bits символ) формате. Инсталяция: Чтобы установить и использовать этот скрипт, Вам необходимо только установить должным образом сконфигурированный PHP. Скрипт был проверен на PHP версия > = 4.3.x. СОЗДАНИЕ НОВОГО ОБЪЕКТА include_once ("excel.php"); //используйте данную функцию, для предотвращения конфликта переопределения функций. $excel = new ExcelFileParser ($logfilename, $logtype); $logfilename - необязательный параметр (имя файла для регистрации отладки). Заданное по умолчанию значение - пустая строка, без регистрации отладочной информации. $logtype - регистрирация типа. Заданное по умолчанию значение ABC_NO_LOG - отключает регистрацию. Регистрационный тип может быть один из следующего: ABC_CRITICAL ABC_ERROR ABC_ALERT ABC_WARNING ABC_NOTICE ABC_INFO ABC_DEBUG ABC_TRACE ABC_VAR_DUMP ABC_NO_LOG Поразрядное комбинирование этих флагов не разрешено. Вы можете использовать только один из них. Два метода используются для обработки данных Excel: ParseFromFile ($filename) Эта функция оптимизирована для памяти, но скрипт выполняется более медленней при выполнении и к разбору выбранных данных. Используйте эту функцию с большими файлами. ParseFromString ($contents) Эта функция не оптимизирована для памяти, но скрипт использует меньшее времени, при выполнении и разбору выбранных данных. Используйте функцию, когда скорость разбора данных критична (PHP ограничения памяти могут быть превышать для огромных файлов, и скриптможет быть выгружен из памяти!). НЕ ИСПОЛЬЗУЙТЕ ДАННУЮ ФУНКЦИЮ!!! ОНА ДАНА КАК ПРИМЕР ДЛЯ УСКОРЕННОЙ РАБОТЫ. ФУНКЦИЯ РАБОТАЕТ КРАЙНЕ НЕ СТАБИЛЬНО! Пример: $error_code = $excel->ParseFromFile($filename) $fd = fopen( $filename, 'rb'); $content = fread ($fd, filesize ($name)); fclose($fd); $error_code = $excel->ParseFromString($content); unset( $content, $fd ); Коды Ошибок: 0 - ошибок нет 1 - ошибка чтения файла 2 - файл слишком маленький, чтобы быть файлом Excel 3 - ошибка чтения заголовка файла Excel 4 - ошибка чтения файла 5 - не файл Excel или версия Excel ранее чем Excel 5.0 6 - битый файл 7 - данные, не найденны 8 - неизвестная версия файла Обратите внимание: Ошибка 7 возникает, когда данные Excel не найдены в OLE2 формате файла (подобно MS WORD) ПОЛЯ ОБЪЕКТА int $excel->biff_version Excel файл BIFF версия (7 = Excel 5-7, от 8 до 2000, 10 = XP) array $excel->worksheet Массив, содержащий список данных array $excel->format Массив, содержащий данные со стилем форматирования ячеек ТАБЛИЦЫ $worksheet_number = Число рабочих листов Excel - чтобы рассмотреть количество доступных рабочих листов, используйте для определения count($excel->worksheet['name']) boolean $excel->worksheet['unicode'][$worksheet_number] Если данные сохранены в несжатом unicode, функция возвращает значение TRUE, FALSE используется для сжатого unicode string $excel->worksheet['name'][$worksheet_number] Название рабочего листа в сжатом или несжатом unicode int $excel->worksheet['data'][$worksheet_number]['biff_version'] BIFF список версий КОЛОНКИ array $excel->worksheet['data'][$worksheet_number]['cell'] Массив, содержащий данные ячеек для выбранного рабочего листа. $row = номер ячейки (отсчет начинается с 0) $col = номер колонки (отсчет начинается с 0) в Excel колонки именуются 'A', 'B', 'C', и тд int $excel->worksheet['data'][$worksheet_number]['max_row'] Максимальный номер строки (! Но не максимальное количество строк!). Например, список имеет данные в строках 1,3,8 - максимальное значение 8, количество строк 3 int $excel->worksheet['data'][$worksheet_number]['max_col'] Максимальный номер столбца (тот же самое что и для строк, см. выше) int $excel->worksheet['data'][$worksheet_number]['cell'][$row][$col]['type'] Тип данных, содержащийся в ячейке: 0 - строка 1 - целое число 2 - число с плавающей точкой 3 - дата mixed $excel->worksheet['data'][$worksheet_number]['cell'][$row][$col]['data'] Если тип данных - 0, ячейка содержит индекс строки в ОТС(общедоступная таблица строк) Если тип данных - 1, ячейка содержит целое число Если тип данных - 2, ячейка содержит число с плавающей точкой Если тип данных - 3, ячейка содержит дату в представлении Excel int $excel->worksheet['data'][$worksheet_number]['cell'][$row][$col]['font'] - Содержит индекс шрифта, используемого в ячейке ШРИФТЫ Шрифты, которые используются в рабочей книге, сохранены в $excel- >fonts массиве. Они просматриваются следующим способом: $font = $excel->fonts[$index]; $font['size'] - Размер шрифта в пунктах $font['italic'] - шрифт курсив true/false $font['strikeout'] - шрифт подчеркнутt true/false $font['bold']- шрифт полужирный true/false $font['script'] - Может иметь следующие постоянные значения: XF_SCRIPT_NONE - обычный шрифт. XF_SCRIPT_SUPERSCRIPT - Установлен верхний регистр. XF_SCRIPT_SUBSCRIPT - Установлен верхний регистр. $font['underline'] - Может иметь следующие постоянные значения: XF_UNDERLINE_NONE - обычный шрифт. XF_UNDERLINE_SINGLE - одинарное подчеркивание установлено. XF_UNDERLINE_DOUBLE - Двойное подчеркивание установлено. XF_UNDERLINE_SINGLE_ACCOUNTING - установить одинарное подчеркивание XF_UNDERLINE_DOUBLE_ACCOUNTING - установить двойное подчеркивание $font['name'] -имя используемого шрифта. ОБЩЕДОСТУПНАЯ ТАБЛИЦА СТРОК (ОТС-SST): Все данные в виде строк сохраняются в этой таблице, чтобы оптимизировать использование памяти компьютера. Ячейки не содержат строковые значения, а только индекс строки размещенной в этой таблице. Доступ к индексамосуществляется: if( $excel->worksheet['data'][$worksheet_number]['cell'][$row][$col]['type'] == 0 ) { $ind = $excel->worksheet['data'][$worksheet_number]['cell'][$row][$col]['data']; } array $excel->sst Массив содержащий строки boolean $excel->sst['unicode'][$ind] Логическое значение, показывает, представлены ли данные в несжатом (TRUE) или сжатом (FALSE) unicode string $excel->sst['data'][$ind] Строковое значение ДАТА Дата сохранена в формате Excel - (число дней, начинающихся с 1900 года) и может быть преобразована в timestamp $excel->xls2tstamp($xlsdate) Вы можете работать с возвращенными данными, использующими обычный unix timestamp и форматировать стандартными функциями для даты в PHP. Поскольку на платформе Windows минимальное timestamp значение (ноль секунд) - 1,1,1970 эта функция возвращает правильно только более поздние даты. Если Вы должны обработать более ранние даты, то используйте функцию: $ret = $excel->getDateArray($xlsdate); Где: $ret['day'] = День месяца. $ret['month'] = Месяц. $ret['year'] = Год. ОТЛАДКА Чтобы при анализе писать logfile - класс должен быть создан со следующими параметрами: ExcelFileParser('logfile.txt',LOG_LEVEL); LOG_LEVEL может иметь следующие значения: ABC_CRITICAL ABC_ERROR ABC_ALERT ABC_WARNING ABC_NOTICE ABC_INFO ABC_DEBUG ABC_TRACE ABC_VAR_DUMP Более низкий уровень, будет записывать в файл регистрации большее количество сообщений при анализе документа. С ABC_NO_LOG - лог не ведется. ПРИМЕР См. sample - папка с рабочим примером.