За последние 24 часа нас посетили 15815 программистов и 1545 роботов. Сейчас ищут 757 программистов ...

txt to excel

Тема в разделе "Прочие вопросы по PHP", создана пользователем forint, 25 май 2010.

  1. forint

    forint Активный пользователь

    С нами с:
    7 фев 2008
    Сообщения:
    26
    Симпатии:
    0
    Добрый вечер.
    Сегодня столкнулся с некой задачкой, решение которой, сам к сожалению найти не смог =(
    Прошу поучаствовать и помочь советом да и скриптом=))( извиняюсь за наглость)
    Сам пишу на перле, но тут вдруг привиделось во сне моему начальнику, что надо что-то на РНР переделать и поставил он мне следующую задачку:

    в результате отработки некого скрипта, допустим parser.pl, мы имеем текстовый фай с данными в виде таблицы ( ух как банально звучит)..
    Код (Text):
    1.  
    2. 281 * Викторов
    3. 281 * Петров
    4. 276 * Измайлов
    5. 204 * Иванов
    6. 199 * Федьков
    7. ......*......
    8. ......*......
    9. и так далее ,
    10. кстати формат текста
    11. в файле  UTF-8
    12. ......*......
    13. ......*......
    так вот на данный момент у меня стоит задача экспортировать с этого файла (input.txt) в excel (output.xls ), да так что бы состоял output.xls из двух столбцов:
    Код (Text):
    1.  
    2. ______________
    3. |281 | Викторов |
    4. |281 | Петровa. |
    5. |276 | Измайлов |
    6. |204 | Иванов   |
    7. |199 | Федьков  |
    8. .........................
    9. ........и тд...........
    не долго думая ( моя проблема =(( ) я пошел по накатанной дорожке в гуггль.
    Читал мануалы, разбирал примеры экспорта из xls в бд с вашего сайта, надеясь понять логику, но к сожалению пришел в тупик, признаю что слишком сложно для меня =(..
    хотя имею следующий код, не скажу что он мой, но он меня заинтересовал, увидел его у КЛАЦ..

    Код (Text):
    1. <?php
    2. $filename ="excelreport.xls";
    3. $contents = "testdata1 \t testdata2 \t testdata3 \t \n";
    4. header('Content-type: application/ms-excel');
    5. header('Content-Disposition: attachment; filename='.$filename);
    6. echo $contents;
    7.  ?>
    не буду лукавить, заинтересовал меня он своей простотой, что вообще то меня и в тот же момент напрягло..
    так вот вопрос, будет ли данный скрипт создавать "здоровый", рабочий xls файл.
    Если да, то как он обработает ограничение Excel - максимум 65536 строк на одном листе когда у меня файл "input.txt" может достигать и пары сотен тысяч строк?
    ну а если я ошибся и скрипт просто создает просто файл с данным расширением и просто заполняет его "contents",
    то не могли бы вы мне подсказать, привести рабочий пример решения данной задачки.?

    с Уважением Алексей.
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    скрипт просто создает просто файл с данным расширением.

    попробуйте посмотреть http://phpexcel.codeplex.com/
     
  3. forint

    forint Активный пользователь

    С нами с:
    7 фев 2008
    Сообщения:
    26
    Симпатии:
    0
    Спасибо за быстрый ответ, когда я "гуглил" я встречался и на сколько мне моих знаний хватало пытался вникнуть в этот класс.
    К моему сожалению, в нем очень много не нужного мне и как я уже говори, моих знаний не хватает для осмысления всего что там, честно я просто теряюсь...
    В моей ситуации надо экспортировать данные с текстовика в файл excel.
    Если у вас есть такая возможность, то буду очень благодарен увидите простейший скрипт который такое делает используя класс PHPExcel или еще что лучше не использует сложных классов..
     
  4. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    PHP:
    1.  
    2. <?php
    3. $objPHPExcel = new PHPExcel();
    4.  
    5. $active_sheet = $objPHPExcel->getActiveSheet();
    6.  
    7. $active_sheet->setCellValueByColumnAndRow(1, 1, 'aaa');
    8.  
    9. $active_sheet->setCellValueByColumnAndRow(2, 2, 'bbb');
    10.  
    11. // Установка необходимых заголовков
    12. header('Content-Type: application/vnd.ms-excel');
    13. header('Content-Disposition: attachment;filename="Report.xls"');
    14. header('Cache-Control: max-age=0');
    15.  
    16. // Отправка файла
    17. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    18. $objWriter->save('php://output');
     
  5. forint

    forint Активный пользователь

    С нами с:
    7 фев 2008
    Сообщения:
    26
    Симпатии:
    0
    iliavlad
    спасибо огромное за приведенный пример, подтолкнуло меня к некоторым мыслям в моем вопросе..
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  7. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Luge
    эксель может некоторые числа воспринимать как даты, при выводе смотрится достаточно странно. надо вручную их переделывать. и еще там какие-то сложности бывают. лучше сразу в формат экселя переводить.
     
  8. forint

    forint Активный пользователь

    С нами с:
    7 фев 2008
    Сообщения:
    26
    Симпатии:
    0
    к сожалению нет, в итоге будут строиться графики.. мне удобней импортировать в xls и аналог делать на вебе.
     
  9. forint

    forint Активный пользователь

    С нами с:
    7 фев 2008
    Сообщения:
    26
    Симпатии:
    0
    Еще раз Добрый день.

    в результате работы с данным классом, пришел к одной проблеме (извиняюсь если данный вопрос не по теме).:

    я решил инклюдить данный класс прямо в перловый скрипт, класс отработал нормально, но будет ли он видеть и принимать переменные Перлового скрипта ? ( $key )

    Код (Text):
    1.  
    2. перловая часть вывода данных
    3. print OUTPUT "$count{$key} * $key\n";
    4.  $c1++;
    5.  $c++;
    6.  }
    7. print "</pre>\n";
    8. инклюд php скрипта
    9.  
    10. system("php5 /home/oplya198/www/site1/public_html/lib/Tests/test.php");
    если да, да и если нет. не подскажите мне, как заставить php часть,
    Код (Text):
    1.  
    2. $objPHPExcel->setActiveSheetIndex(0)
    3.  ->setCellValue('A1', 'Hello')
    4.  ->setCellValue('B2', 'world!')
    5.  ->setCellValue('C1', 'мир вам')
    брать из переменной массив и писать их в excel ?
    (из текстового файла, как в примере в первых постах.)

    еще раз извиняюсь если что то не понятно написал, и если вопрос банально глуп.

    зы; нашел вот такой пример :
    Код (Text):
    1.  
    2. ================
    3. # cat 12
    4. #!/usr/bin/perl
    5.  
    6. print "================\n";
    7.  
    8. $test = `php ./index.php &`;
    9. print $test;
    10. print "================\n";
    но он не подходит по причине того, что массив получает перл, а мне надо массив из перла поймать пхп сриптом . =(
     
  10. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4