PHP到Excel,加粗字体

时间:2010-08-11 11:04:23

标签: php export-to-excel

通过php将一些数据从excel传输到excel我正在使用此函数来创建标签;

function xls_label($row, $col, $value, $bold )  
{       
     echo pack("ssssss", 0x204, 8 + strlen($value), $row, $col, 0x0, strlen($value)); 
     echo $value;  
}

这会以常规字体添加标签。

现在我想知道我需要添加到此函数中以使标签的字体变为粗体?


我不想使用任何库,因为我只需要这个简单的函数。

3 个答案:

答案 0 :(得分:6)

我会说使用一个库,因为(正如Marc B所说)“如果你正在使用格式化/字体,那么它就不再是一个”非常简单“的Excel文件了。”

你甚至不说你需要什么BIFF版本,所以我假设BIFF5,因为你使用的标签单元标记为0x204

重要元素是pack语句中的0x0值:

echo pack("ssssss", 0x204, 8 + strlen($value), $row, $col, 0x0, strlen($value));

您需要在“Workbook Global Substream”中创建Font xf记录,然后将0x0值设置为该字体记录的xf标识符,+ 16。

您没有显示足够的代码来确定您需要添加新字体记录的位置,但字体记录的类型为0x0031。您应该已经编写了默认字体记录(xf = 0),因此您需要修改代码的这一部分以创建xf为1的第二个字体记录,这意味着您的0x0需要为0x11

对于粗体,此字体记录在偏移量6处需要值0x02BC。为了将来参考,如果您想要随后添加更多字体样式,斜体需要在偏移量2处使用0x0002的位掩码,而删除线需要0x0008的位掩码偏移4.偏移4指向颜色索引,如果要更改字体颜色,偏移8指示上标/下标,偏移10指示下划线类型。偏移11,12和14标识字体系列,字符集和字体名称的大小,后跟字体名称本身。

您可以在http://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx

找到所有选项的完整详情

正如您可能开始欣赏的那样,这并不像您想要的那样简单明了。这就是为什么我们大多数人在使用复杂的二进制格式而不是试图自己编写它时使用库。

答案 1 :(得分:5)

告诉你一个秘密:创建一个HTML表并将其写入扩展名为.XLS的文件中。当Excel打开它时,它会像IE那样读取格式,但现在你有了一个电子表格。这意味着您可以应用任何格式。用PHP连接它,你就是网络开发部门的金童一周。

答案 2 :(得分:1)

我使用以下格式,我使用所有的html标签,如粗体,字体等。

<?php
$fn=$_POST[fname];
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$fn.xls");
header("Pragma: no-cache");
header("Expires: 0");

$c=$_POST[con];
print "$c";
?>

post变量在其他一些文件中生成并提交给该文件..