Из файла excel на страницу сайта.

Тема в разделе "Как сделать...", создана пользователем ram222, 30 окт 2013.

  1. ram222

    ram222 Da Vinci

    Регистр.:
    27 апр 2009
    Сообщения:
    761
    Симпатии:
    76
    Требуется автоматом из документов excel вставлять данные на определённые страницы.
    То есть я загружаю папку с документами в папку на сайте, а на страницах появлялись данные из этих документов.
    Возможно ли такое?
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.547
    Симпатии:
    1.419
    Да возможно, достаточно три метода/модуля реализовать:
    - проверка папки на наличие новых файлов (поставить на крон);
    - парсниг excel и проверка данных на валидность;
    - добавление данных в БД сайта.
     
    ram222 нравится это.
  3. ram222

    ram222 Da Vinci

    Регистр.:
    27 апр 2009
    Сообщения:
    761
    Симпатии:
    76
    Нашёл куски кода которые в принципе делают то что мне нужно, немного переделал их.
    Вот как их связать теперь?
    Например:
    Этот находит файлы xls в папке ram:
    PHP:
    <?php
    $arr 
    scandir('ram/');
    $count count($arr);
    if(!empty(
    $count)) {
      
    $status false;
      
    $text '';
      for(
    $i 0$i $count$i++) {
        if(
    substr($arr[$i], -4) == '.xls') {
          
    $status true;
          
    $text .=$arr[$i];
        }
      }
    }
    if(
    $status)
      echo 
    $text//echo '<select name="files">', $text, '</select>';
    else
      echo 
    'Файлов с расширением xls не найдено';
    ?>    
    Этот выводит данные из документа xls:
    PHP:
    <?php
    require_once ('Excel/reader.php');

    $data = new Spreadsheet_Excel_Reader();
    $data->setOutputEncoding('CP1251');
    $data->read('Дилер.xls');  

    echo 
    "<table>";
    for (
    $i 1$i <= $data->sheets[0]['numRows']; $i++) {
      echo 
    '<tr border=1>';
      for (
    $j 1$j <= $data->sheets[0]['numCols']; $j++) {
        echo 
    '<td>'.$data->sheets[0]['cells'][$i][$j].'</td>';
      }
      echo 
    '</tr>';
    }
    echo 
    '</table>';
    ?>
    Есть ещё код записи данных из документа в базу.
    Как их связать, чтобы все найденные документы обработались по очереди, записались в базу ?

    Или как вообще применить какой то код (функцию) ко всем файлам в папке?
    ЗЫ. Изучаю потихоньку php, но хочется быстрее, потому как "Начальству - вынь да положь" , надо всё и сразу, а платить за Битрикс например, туеву хучу денег не хочет никто. Да и то , не факт что всё там устроит.
     
    Последнее редактирование модератором: 8 ноя 2013
  4. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    Если нужно много и сразу не мучайте себя закажите на бирже обойдется не более 30$ а если помучить нервы то и 10$ откупитесь...

    А вообще если ничего не напутал ибо не тестил то как то так

    PHP:
    require_once ('Excel/reader.php'); // подключаем либу для работы с XLS
    $data = new Spreadsheet_Excel_Reader(); // инициализируем её

    // создаем функцию для конвертирования. на входе путь к файлу на выходе html
    function output_xls($file)
    {
        global 
    $data;
        
    $data->setOutputEncoding('CP1251');
        
    $data->read($file);


        
    $out "<table>";
        for (
    $i 1$i <= $data->sheets[0]['numRows']; $i++) {
            
    $out .= '<tr border=1>';
            for (
    $j 1$j <= $data->sheets[0]['numCols']; $j++) {
                
    $out .= '<td>' $data->sheets[0]['cells'][$i][$j] . '</td>';
            }
            
    $out .= '</tr>';
        }
        
    $out .= '</table>';
        return 
    $out;
    }

    // сканируем указаную папку и вносим все имена файлов в масив
    $xls_files scandir('ram/');
    foreach (
    $xls_files as $file// обходим масив по порядку
        
    if (substr($file, -4) == '.xls') { // проверяем расширение в имени файла
            
    echo $tmp output_xls($file); // вызываем функцию конвертирования
            
    echo '<hr>';
          
    // В этой области крутите скрипт записи данных.
        
    }
     
    latteo нравится это.