Форматировать текст в файле Excel через PHP - PullRequest
5 голосов
/ 11 ноября 2008

Я загружаю данные из своей базы данных и экспортирую в файл Excel с помощью метода, найденного на этом сайте: http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8

Это работает, но сейчас я хочу отформатировать текст перед экспортом - изменить шрифт и размер текста. У кого-нибудь есть идеи, как это сделать?

Ответы [ 6 ]

6 голосов
/ 11 ноября 2008

В зависимости от скорости, с которой вы хотите развернуть свое решение, одним из методов является использование тега HTML-таблицы, сохранение всех ваших данных в таблицах с использованием разметки стиля, а затем использование опции заголовка PHP для принудительного сохранения в браузере. как файл .xls.

Для подтверждения концепции скопируйте этот код в блокнот, сохраните как .xls, а затем откройте в Excel:

<table>
<tr><th>Column 1</th><th>Column 2</th></tr>
<tr><td style="font-size:200%">Answer 1</td><td style="color:#f00">Answer 2</td></tr>
<tr><td colspan="2" style="font-weight:bold">Answer 3 with 2 columns</td></tr>
</table>

Это не самое элегантное решение, но оно будет абсолютно соответствовать вашим потребностям.

6 голосов
/ 11 ноября 2008

Я написал таблицы Excel из PHP 5, используя классы PEAR :: Package :: Spreadsheet_Excel_Writer. С этим пакетом можно многое сделать.

3 голосов
/ 11 ноября 2008

PHPExcel предоставляет вам возможности сделать это и многое другое.

Редактировать: Этот проект устарел.

1 голос
/ 12 ноября 2008

Я использовал php_writeexcel несколько раз, и мне очень понравилось! :)

0 голосов
/ 23 марта 2011
<?php
    include '../include/config.php';
    $sql                        =   "SELECT SQL_CALC_FOUND_ROWS
                                    ".DB_TBL_TUTORS_RECAPS.".id,
                                    ".DB_TBL_TUTORS_RECAPS.".date_of_tutoring_session,
                                    ".DB_TBL_TUTORS_RECAPS.".created,
                                    ".DB_TBL_TUTORS_RECAPS.".hours_tutored,
                                    ".DB_TBL_TUTORS_RECAPS.".billable_travel,
                                    ".DB_TBL_TUTORS_RECAPS.".billable_additional,
                                    ".DB_TBL_TUTORS_RECAPS.".type_of_tutoring,
                                    ".DB_TBL_TUTORS_RECAPS.".additional_comments,
                                    ".DB_TBL_TUTORS_RECAPS.".total_billable,
                                    ".DB_TBL_TUTORS_RECAPS.".materials_covered_during_session,
                                    ".DB_TBL_TUTORS_RECAPS.".next_scheduled_session_location,
                                    ".DB_TBL_TUTORS_RECAPS.".rate,
                                    ".DB_TBL_TUTORS_RECAPS.".tutor_pay_rate,
                                    ".DB_TBL_APPLICANTS.".first_name as tutor_first_name,
                                    ".DB_TBL_APPLICANTS.".last_name as tutor_last_name,
                                    ".DB_TBL_PIPELINE.".tutor_match_notes,
                                    ".DB_TBL_PIPELINE.".date_of_submission,
                                    ".DB_TBL_PIPELINE.".tutor_name,
                                    ".DB_TBL_PIPELINE.".tutor_id,
                                    ".DB_TBL_CLIENTS.".id as client_id,
                                    ".DB_TBL_CLIENTS.".first_name,
                                    ".DB_TBL_CLIENTS.".last_name,
                                    ".DB_TBL_CLIENTS.".location_name,
                                    ".DB_TBL_CLIENTS.".last_name,
                                    ".DB_TBL_CHILDREN.".id as child_id,
                                    ".DB_TBL_CHILDREN.".last_name as last,
                                    ".DB_TBL_CHILDREN.".first_name as first
                                FROM 
                                    ".DB_TBL_TUTORS_RECAPS."
                                LEFT JOIN ".DB_TBL_PIPELINE." ON ".DB_TBL_PIPELINE.".id= ".DB_TBL_TUTORS_RECAPS.".pipeline_id
                                LEFT JOIN ".DB_TBL_CHILDREN." ON ".DB_TBL_CHILDREN.".id= ".DB_TBL_TUTORS_RECAPS.".child_id  
                                LEFT JOIN ".DB_TBL_CLIENTS." ON ".DB_TBL_CLIENTS.".id= ".DB_TBL_TUTORS_RECAPS.".client_id   
                                LEFT JOIN ".DB_TBL_TUTORS." ON ".DB_TBL_TUTORS_RECAPS.".tutor_id= ".DB_TBL_TUTORS.".id  
                                LEFT JOIN ".DB_TBL_APPLICANTS." ON ".DB_TBL_APPLICANTS.".id= ".DB_TBL_TUTORS.".applicant_id 
                            WHERE 


                            " . DB_TBL_CLIENTS . ".status = 'Existing' AND

                            " . DB_TBL_APPLICANTS . ".status = 'Existing' AND

                            " . DB_TBL_PIPELINE . ".status = 'Existing' AND                             
                            " . DB_TBL_TUTORS_RECAPS . ".is_deleted = '0'                               
                                GROUP BY " . DB_TBL_TUTORS_RECAPS . ".id
                                ORDER BY " . DB_TBL_TUTORS_RECAPS . ".created DESC ";

    $totallogs      =   $db->query($sql);
    $filename       =   "Tutoring_Log.xls";
    $contents       =   "Recap# \t Tutor Name \t Client Name \t Child Name \t Type of tutoring \t Date of Tutoring session \t Hours tutored \t Billable Travel \t Billable Additional \t Total Billable \t Client Rate \t Tutor Pay Rate \t  \n";
    $contents       .=  "  \n";

    while($tutorRecords = $db->fetchNextObject($totallogs)){

        $contents .= "".$tutorRecords->id." \t ".$tutorRecords->tutor_first_name.' '.$tutorRecords->tutor_last_name." \t ".$tutorRecords->first_name.' '.$tutorRecords->last_name." \t ".$tutorRecords->first.' '.$tutorRecords->last." \t ".$globalsConstant['type_of_tutoring'][$tutorRecords->type_of_tutoring]." \t ".date(MDY,$tutorRecords->date_of_tutoring_session)." \t ".str_replace('.',':',$tutorRecords->hours_tutored)." \t ".str_replace('.',':',$tutorRecords->billable_travel)." \t ".str_replace('.',':',$tutorRecords->billable_additional)." \t ".str_replace('.',':',$tutorRecords->total_billable)." \t ".CURRENCY.$tutorRecords->rate." \t  ".CURRENCY.$tutorRecords->tutor_pay_rate."  \t \n";

    }

    header('Content-type: application/ms-excel');
    header('Content-Disposition: attachment; filename='.$filename);
    echo $contents;
      ?>
0 голосов
/ 11 ноября 2008

Система шаблонов TinyButStrong (www.tinybutstrong.com) имеет дополнительный плагин, который позволяет писать шаблоны в формате Excel.

Я использовал это очень много. Особенно удобно то, что вы можете настроить страницу для записи в HTML или Excel в зависимости от флага - поэтому, как правило, мои отчеты предлагают варианты «отображать на странице» и «писать в Excel».

...