За последние 24 часа нас посетили 74300 программистов и 10165 роботов. Сейчас ищут 2719 программистов ...

Как созд. табл. в RTF из PHP выт. данные из MySQL в цикле?

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

  1. jei

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

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0

    Сам ты не шаришь
     
  2. jei

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

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0

    Я всё прекрасно знаю я вам обьяснил кто вам нужен.
    И не нужен вам скрипт этот.
     
  3. Зверь

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

    С нами с:
    2 ноя 2010
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Екатеринбург
    muravey
    Можно в google поискать готовую библиотеку для этого или попробовать написать самостоятельно, изучив формат rtf, вот например ссылка на формат rtf http://www.codenet.ru/progr/formt/rtf1.php
    Не знаю что будет сложнее разобраться с готовой библиотекой или написать свое
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.547
    Симпатии:
    0
    Адрес:
    Мариуполь
    jei

    Правильно, я не шарю. И не пытаюсь рассказать как "нужно сделать".

    Человек задает вопрос - как динамически создать RTF-файл. Если ты с такой задачей не сталкивался, то зачем лезешь и советуешь х..ню?
     
  5. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    jei
    От Ваших сообщений на самом деле болит голова, человек все прекрасно объяснил, а ты то ли дурака начинаешь включать, то ли над человеком издеваться, тут даже не сведующий в программировании человек поймет вопрос, ответит естественно только сведующий))

    +1

    А что касается перегона в РТФ, то советую использовать одну из готовых библиотек (если конечно нет уймы свободного времени разбираться с форматом), просто опробуй несколько библиотек на простых примерах, выбери получше и построй на ней свой скрипт (гуголь "php rtf")
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.372
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    В принципе можно обычную html таблицу отправлять, просто заголовки нужные поставить :) Например так:
    PHP:
    1. <?php
    2. $tblBody = '';
    3. $arr = array(
    4.    array('first_row_1', 'first_row_2', 'first_row_3'),
    5.    array('second_row_1', 'second_row_1', 'second_row_1')
    6. );
    7. foreach($arr as $row)
    8.    $tblBody .= "         <tr><td>{$row[0]}</td><td>{$row[1]}</td><td>{$row[2]}</td></tr>\r\n";
    9. header('Content-type: application/msword');
    10. header('Content-Disposition: inline, filename=rtf.rtf');
    11. ?>
    12. <html>
    13.    <head>
    14.       <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
    15.    </head>
    16.    <body>
    17.       <table border="1" cellpadding="0" cellspacing="0">
    18. <?php echo($tblBody); ?>
    19.       </table>
    20.    </body>
    21. </html>
    И MS Word и OOo Writer вполне даже откроют такое.
     
  7. jei

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

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    Ну давай умник покажи как сделать подобную задачу.А мы все посмотрим и признаем в тебе мастера.Если ты конечно просто не п......
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.547
    Симпатии:
    0
    Адрес:
    Мариуполь
    jei Я же написал, что не лезу(в отличие от некоторых) - так как с подобной задачей не сталкивался.
    Эксель - могу рассказать, RTF - увы.
     
  9. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Спасибо!
    Но ссылка не загржается...
     
  10. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Парни прошу не засоряйте тему спором.

    Нужно решение, а не ваша дискуссия кто круче.
     
  11. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Расскажите про Эксель, может тоже подойти...
     
  12. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    В том вопрос и звучит данной темы, кто это делал и как?
     
  13. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Спасибо, да согласен это работает!

    Но задача стоит посложней это в формате RTF!
     
  14. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.547
    Симпатии:
    0
    Адрес:
    Мариуполь
    Говорю сразу - решение не лучшее, подойдет для Excel2003 и выше, в более ранних вряд ли откроется файл. но вполне рабочее:
    1) Создаешь в Экселе документ, аналог которого хочешь получить. Причем сразу с нужной разметкой, шрифтами и прочим (чтобы потом не заморачиваться этим в рнр). Заполняешь его тестовыми данными.
    2) Сохраняешь его как xml-документ.
    3) Открываешь в любом редакторе, поддерживающем синтаксис xml (я в нетбинсе работаю, может и notepad++ подойти).
    Видишь что-то типа
    Код (Text):
    1. <?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?>
    2. <Workbook xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel">
    3.     <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
    4.         <Colors>
    5.             <Color>
    6.                 <Index>3</Index>
    и т.д.

    4) Находишь где введены тестовые данные. Например у нас таблица из 3х столбцов.
    Код (Text):
    1. <Row ss:Height="13.5496">
    2.                 <Cell>
    3.                     <Data ss:Type="Number">12</Data>
    4.                 </Cell>
    5.                 <Cell>
    6.                     <Data ss:Type="Number">84</Data>
    7.                 </Cell>
    8.                 <Cell>
    9.                     <Data ss:Type="Number">45</Data>
    10.                 </Cell>
    11.                 <Cell ss:Index="6"/>
    12.             </Row>
    13.             <Row ss:Height="13.5496">
    14.                 <Cell>
    15.                     <Data ss:Type="Number">13</Data>
    16.                 </Cell>
    17.                 <Cell>
    18.                     <Data ss:Type="Number">41</Data>
    19.                 </Cell>
    20.                 <Cell>
    21.                     <Data ss:Type="Number">85</Data>
    22.                 </Cell>
    23.                 <Cell ss:Index="6"/>
    24.             </Row>
    25.             <Row ss:Height="13.5496">
    26.                 <Cell>
    27.                     <Data ss:Type="Number">654</Data>
    28.                 </Cell>
    29.                 <Cell>
    30.                     <Data ss:Type="Number">65</Data>
    31.                 </Cell>
    32.                 <Cell>
    33.                     <Data ss:Type="Number">45</Data>
    34.                 </Cell>
    35.                 <Cell ss:Index="6"/>
    36.             </Row>
    В данном примере у нас 3 ряда, но их число в получаемом документе неизвестно. Копируем 1 ряд, лишнее обрезаем, подставляем переменные, короче говоря - обычный цикл
    PHP:
    1. <?
    2. while ($row = mysql_fetch_assoc($result)):
    3. ?>
    4. <Row ss:Height="13.5496">
    5.                 <Cell>
    6.                     <Data ss:Type="Number"><?php echo $row['price'] ?></Data>
    7.                 </Cell>
    8.                 <Cell>
    9.                     <Data ss:Type="Number"><?php echo $row['percent'] ?></Data>
    10.                 </Cell>
    11.                 <Cell>
    12.                     <Data ss:Type="Number"><?php echo $row['number'] ?></Data>
    13.                 </Cell>
    14.                 <Cell ss:Index="6"/>
    15.             </Row>
    16. <? endwhile;?>
    5) Ну и как правильно сказал выше sobachnik важно отправить правильный заголовок в начале, например header('Content-type: application/vnd.ms-excel'); хотя для экселя есть несколько вариантов. Какой именно отправлял сейчас не вспомню.

    Таким образом - можно и формулы Экселевские формировать, точнее создавать их в исходном документе, а в рнр - подсчитывать какие именно ячейки попадут в формулу (например используя mysql_num_rows). В своем случае - считал простые суммы столбцов.

    Это общая идея)) Есть вопросы - задавай)

    А вообще существует библиотека - phpExcel. Возможно правильнее будет её освоить[/code]
     
  15. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Спасибо попробую!
     
  16. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    ЗДОРОВО работает.

    Я сейчас этот алгоритм реализую в своем проекте и потом поделюсь результатом и скриптом кому нуно! ОК!
    Но это уже другая тема http://www.php.ru/forum/viewtopic.php?t=29423

    Но парни с RTF тоже нуно!
     
  17. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.372
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    http://deep.webest.net/forum/17364/1/
    В этом обсуждении много полезных ссылок. Там приводятся ссылки на спецификации по rtf, причём есть и русские, как я понял. Ну и некоторые команды rtf-ные приводятся в самом топике. Если есть время - самый лучший вариант, как мне кажется, это посидеть, почитать, во всём разобраться и самому написать класс (или хотя бы набор функций) для генерации rtf документов. Это вполне реально сделать. Я бы сам занялся с удовольствием написанием такой штуковины, но на это надо потратить немало времени, которого у меня сейчас практически нет...
     
  18. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Спасибо!
     
  19. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.372
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А по поводу готовых библиотек - я нашёл парочку, но ни в одной нету генерации таблиц... То есть они совсем-таки простенькие и генерят не сложные rtf. Есть и более функциональные классы, которые могут генерировать полноценные rtf-ы и использовать все возможные для rtf функции, но их бесплатно разработчики не отдают - от 50 $ и выше... Хотя может я просто не нашёл :)
     
  20. muravey

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

    С нами с:
    11 дек 2010
    Сообщения:
    40
    Симпатии:
    0
    Адрес:
    Екатеринбург