如何使用纯PHP格式化excel文件的样式,字体,颜色,表格等?
I need a way to write an excel file with format through Pure PHP. WARNING:Please, this Q not about the libs, plugins and so on- do not disturb. I've googled a lot and didn`t find the Answer, but in some article on StackOverflow, some guy mentioned the HTML/CSS format way HTML format solutions that didn't work and I've tried to do this, but in file which was saved columns where filled with tags and nothing happens. May be there are some professionals who can help me with pure code writing an Excel through PHP, HTML, CSS or something.
And again with example, I've already used concept like this wich didn't help:
// headers for excel
$headers .= "<div style='font:bold 14px Times;'>Журнал остатков и инкассаций</div>
";
$headers .= "Начало периода\t ".date('d.m.Y')."0:00
";
$headers .= "Начало периода\t ".date('d.m.Y')."23:59
";
$headers .= "Терминал\t";
$headers .= "Место расположения\t";
$headers .= "Дата\t";
$headers .= "Время\t";
$headers .= "Сумма инкассации\t";
$headers .= "Банкноты\t";
// excel content with overloaded terminals
if (mssql_num_rows($resCollection)>0) {
while ($rowCollection = mssql_fetch_object($resCollection)) {
$data .= $rowCollection->Name."\t".$rowCollection->Address."\t"
.$rowCollection->TerminalNotes."\t".$rowCollection->TerminalAmount
."\t".$rowCollection->DayAmountAll."\t"
.$rowCollection->LastPaymentTime."
";
}
}
$fileName = 'collection'.date('d_m_Y_H_i_s').'.xls';
header("Content-type: application/vnd.ms-excel");// application/excel had also been used
header("Content-Disposition: attachment; filename=$fileName");
echo iconv('utf-8', 'cp1251', "$headers
$data");
I've used not only divs and tables too - it didn't work though.
我需要一种方法通过Pure PHP编写带格式的excel文件。 警告:请问,这个Q不是关于 libs,插件等等 - 请不要打扰。 我已经google了很多并没有找到答案,但在StackOverflow的一些文章中,有人提到了HTML / CSS格式的方式 HTML格式的解决方案无效 我试过这样做, 但是在保存的列中的文件中填充了标签并且没有任何反应。 可能有一些专业人员可以帮助我使用PHP,HTML,CSS或其他东西编写Excel的纯代码。 p>
//标头为excel
$ headers。=“&lt; div style ='font:bold 14px Times;'&gt;Журналостатковиинкассаций&lt; / div&gt;
“;
$ headers。=”Началопериода\ t“.date('dmY ')。“0:00
”;
$ headers。=“Началопериода\ t”.date('dmY')。“23:59
”;
$ headers。= “Терминал\ t”;
$ headers。=“Месторасположения\ t”;
$ headers。=“Дата\ t”;
$ headers。=“Время\ t”;
$ headers。=“ Суммаинкассации\ t“;
$ headers。=”Банкноты\ t“;
//使用重载终端excel内容
if(mssql_num_rows($ resCollection)&gt; 0){
while($ rowCollection = mssql_fetch_object ($ resCollection)){
$ data。= $ rowCollection-&gt; Name。“\ t”。$ rowCollection-&gt; Address。“\ t”
。$ rowCollection-&gt; TerminalNotes。“\ t “。$ rowCollection-&gt; TerminalAmount
。”\ t“。$ rowCollection-&gt; DayAmountAll。”\ t“
。$ rowCollection-&gt; LastPaymentTime。”
“;
}
}
$ fileName ='collection'.date('d_m_Y_H_i_s')。'。xls';
header(“Content-type:application / vnd.ms-excel”); // application / excel 也被用过
header(“内容 - 处置:附件; filename = $ fileName“);
echo iconv('utf-8','cp1251',”$ headers
$ data“);
code> pre>
我' 我不仅使用了div和表 - 它虽然不起作用。 p>
div>
The following example would probably help you:
1 <?php
2 header('Content-type: application/excel');
3 header('Content-Disposition: attachment; filename="test.xls"');
4 ?>
5
6 <table>
7 <tr><th>Column 1</th><th>Column 2</th></tr>
8 <tr><td style="font-size:200%">Answer 1</td><td style="color:#f00">Answer 2< /td></tr>
9 <tr><td colspan="2" style="font-weight:bold">Answer 3 with 2 columns</td></t r>
10 </table>
Save this as a .php file on your server.
What it does is: add headers to force the browser thing you're delivering an Excel file. And then returning a table inside of it. My Excel picks this up perfectly.
Note: the sample HTML comes from the answer that you had already found. I have just added the headers to the beginning.
Note: You just changed your question and added an example. Your example does NOT use html! You are delivering a TAB-delimited file where each line ends with a newline.
The proper way to do this is to really generate HTML, ie, use a <table>
at the beginning, use <tr>
and </tr>
for each row, and put the fields in <td>
tags, and then finish with the closing </table>
, so basically:
$data='<table>';
// excel content with overloaded terminals
if (mssql_num_rows($resCollection)>0) {
while ($rowCollection = mssql_fetch_object($resCollection)) {
$data.='<tr>';
$data .= '<td>'.$rowCollection->Name."</td><td>".$rowCollection->Address."</td><td>"
.$rowCollection->TerminalNotes."</td><td>".$rowCollection->TerminalAmount
."</td><td>".$rowCollection->DayAmountAll."</td><td>"
.$rowCollection->LastPaymentTime."</td>";
$data.='</tr>';
}
}
$data.='</table>';
Then change your last line to:
echo iconv('utf-8', 'cp1251', "$data");
If that works I suggest you change the output to have <th>
tags around your table headers, instead of the div that is in your example.