WordPress как на ладони
wordpress jino

Как считать Excel файл PHP скриптом?

Задача у меня не сложная, но что-то не получается реализовать. Может сталкивался кто, поможет?

В общем нужно считать имеющийся .xlsx файл. Т.е. нужно обработать файл, чтобы из него получился массив данных.

Нашел фреймворк PHPExcel, но не получается в нем разобраться, что-то не так делаю...

0
Гость 2.8 года назад
  • 0
    Kama4639

    Как-то сталкивался с таким заданием. Считать файл excel гораздо проще чем создать и делается это так.

    Я пользовался упомянутой вами библиотекой PHPExcel. Скачиваем последнюю версию библиотеки по этой ссылке.

    Из скаченного архива нам понадобится только папка Classes. Копируем её в наш проект. Допустим у нас есть файл обработчик запроса и "рядом" с ним мы создали папку "PHPExcel" и скопировали туда папку "Classes", тогда путь к основному файлу библиотеки (PHPExcel.php) будет такой: dirname(__FILE__) . '/PHPExcel/Classes/PHPExcel.php'

    Теперь давайте создадим функцию, которая будет считывать переданный файл и возвращать нам его данные в массиве:

    /* 
     * Считывает данные из любого excel файла и созадет из них массив.
     * $filename (строка) путь к файлу от корня сервера
     */
    function parse_excel_file( $filename ){
    	// подключаем библиотеку
    	require_once dirname(__FILE__) . '/PHPExcel/Classes/PHPExcel.php';
    
    	$result = array();
    
    	// получаем тип файла (xls, xlsx), чтобы правильно его обработать
    	$file_type = PHPExcel_IOFactory::identify( $filename );
    	// создаем объект для чтения
    	$objReader = PHPExcel_IOFactory::createReader( $file_type );
    	$objPHPExcel = $objReader->load( $filename ); // загружаем данные файла в объект
    	$result = $objPHPExcel->getActiveSheet()->toArray(); // выгружаем данные из объекта в массив
    
    	return $result;
    }

    На этом все!

    Пример использования:

    Предположим, наш файл file.xlsx имеет путь www/site.ru/module/file.xlsx и содержит 3 столбца данных: дата, ключ, значение и 5 строк с заполненными данными. Тогда считывая файл нашей созданной функцией:

    $res = parse_excel_file( 'www/site.ru/module/file.xlsx' );
    print_r( $res );

    Мы получим такой массив:

    Array
    (
    	[0] => Array
    		(
    			[0] => 2/10/2014
    			[1] => ключ 1
    			[2] => значение 1
    		)
    
    	[1] => Array
    		(
    			[0] => 2/11/2015
    			[1] => ключ 2
    			[2] => значение 2
    		)
    	[2] => Array 
    		...
    )

    Тут каждый элемент массива это строка и заполненные колонки в ней.

    -

    П.С. Для работы библиотеки ваш хостинг должен удовлетворять следующим требованиям:

    версия PHP 5.2 или выше
    Включенное расширение PHP php_zip
    Включенное расширение PHP php_xml
    Включенное расширение PHP php_gd2

    Комментировать
  • 0

    $root = $_SERVER['DOCUMENT_ROOT'];
    $filename = $root . '/module/file.xlsx';

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.