我需要将数据从php导出到Excel,并能够格式化excel电子表格中的各种项目。
到目前为止,我找到的最好的图书馆是PHPExcel。但是,它看起来很重,而且有点慢。当然,它非常强大。
是否有更轻量级和更快的东西,允许我导出到excel并能够应用简单格式(粗体,对齐,边框)?
答案 0 :(得分:4)
我昨天刚完成了这件事。使用PHPExcel,我在使用格式化的“主”文档中读取没有任何问题,写入20-100行内容,并保存文件(我将其保存到“屏幕”以便立即下载。虽然论坛上的一些人抱怨速度和开销,我正在按照它的方式推送大量数据,它完全没有任何问题做广告宣传。
请注意我读到的某个地方是为了在可能的情况下在循环中进行样式设置。例如,样式a1:a50而不是循环中的style->a1, style->a2
。显然,这两种不同的场景具有非常不同的内存含义。
我发现的唯一问题是输出和读取Excel 2003文件之间的一些怪癖。如果您完全使用XLSX文件,它应该完全按照文档记录。
答案 1 :(得分:0)
这是一个简单的Excel文件生成功能,非常快速且完全.xls文件。
$filename = "sample_php_excel.xls";
$data = array(
array("User Name" => "Abid Ali", "Q1" => "$32055", "Q2" => "$31067", "Q3" => 32045, "Q4" => 39043),
array("User Name" => "Sajid Ali", "Q1" => "$25080", "Q2" => "$20677", "Q3" => 32025, "Q4" => 34010),
array("User Name" => "Wajid Ali", "Q1" => "$93067", "Q2" => "$98075", "Q3" => 95404, "Q4" => 102055),
);
to_xls($data, $filename);
function to_xls($data, $filename){
$fp = fopen($filename, "w+");
$str = pack(str_repeat("s", 6), 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); // s | v
fwrite($fp, $str);
if (is_array($data) && !empty($data)){
$row = 0;
foreach (array_values($data) as $_data){
if (is_array($_data) && !empty($_data)){
if ($row == 0){
foreach (array_keys($_data) as $col => $val){
_xlsWriteCell($row, $col, $val, $fp);
}
$row++;
}
foreach (array_values($_data) as $col => $val){
_xlsWriteCell($row, $col, $val, $fp);
}
$row++;
}
}
}
$str = pack(str_repeat("s", 2), 0x0A, 0x00);
fwrite($fp, $str);
fclose($fp);
}
function _xlsWriteCell($row, $col, $val, $fp){
if (is_float($val) || is_int($val)){
$str = pack(str_repeat("s", 5), 0x203, 14, $row, $col, 0x0);
$str .= pack("d", $val);
} else {
$l = strlen($val);
$str = pack(str_repeat("s", 6), 0x204, 8 + $l, $row, $col, 0x0, $l);
$str .= $val;
}
fwrite($fp, $str);
}