我正在从我的数据库中加载数据,并通过我在此站点上找到的方法导出到 Excel 文件:http: //www.appservnetwork.com/modules.php?name= News&file=article&sid=8
它可以工作,但我现在要做的是在导出之前格式化文本 - 更改字体和文本大小。有人对如何做到这一点有任何想法吗?
我正在从我的数据库中加载数据,并通过我在此站点上找到的方法导出到 Excel 文件:http: //www.appservnetwork.com/modules.php?name= News&file=article&sid=8
它可以工作,但我现在要做的是在导出之前格式化文本 - 更改字体和文本大小。有人对如何做到这一点有任何想法吗?
我使用这些PEAR :: Package :: Spreadsheet_Excel_Writer
类从 PHP 5 编写了 Excel 电子表格。你可以用这个包做很多事情。
根据您希望部署解决方案的速度,一种方法是仅使用 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>
它不是最优雅的解决方案,但绝对适合您的需求。
PHPExcel为您提供了执行此操作以及更多功能的工具。
编辑:此项目现已弃用。
我用过几次 php_writeexcel,非常喜欢它!:)
<?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;
?>
TinyButStrong 模板系统 (www.tinybutstrong.com) 有一个可选插件,可让您写入 excel 模板。
我用过这个很多。它特别简洁,您可以根据标志将页面设置为写入 HTML 或 Excel - 所以通常我的报告提供“在页面上显示”和“写入 excel”选项。