PHP 大会日本 2024

DBA 函数

目录

添加注释

用户贡献的注释 4 条注释

Franz Korntner
12 年前
如果您需要一个“下载数据”按钮,该按钮会自动启动电子表格(如 Excel),发现 fputcsv() 没有按预期工作,安装的 DBA 数据库引擎都无法创建可打开的电子表格,并且 XLS 生成组件过于重量级,那么这可能正合您的需要

<?php
// 要呈现的简单表格
$data = array(
array(
'col1','col2'),
array(
1,2),
array(
3,4)
);

// 假设内容(即 XML)是 XLS 本地
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"sheet.xls\";" );

// 构造骨架
$dom = new DOMDocument('1.0', 'utf-8');
$dom->formatOutput = $dom->preserveSpaces = true; // 可选
$n = new DOMProcessingInstruction('mso-application', 'progid="Excel.Sheet"');
$dom->appendChild($n);

$workbook = $dom->appendChild(new DOMElement('Workbook'));
$workbook->setAttribute('xmlns','urn:schemas-microsoft-com:office:spreadsheet');
$workbook->setAttribute('xmlns:o','urn:schemas-microsoft-com:office:office');
$workbook->setAttribute('xmlns:x','urn:schemas-microsoft-com:office:excel');
$workbook->setAttribute('xmlns:ss','xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet');
$workbook->setAttribute('xmlns:html','http://www.w3.org/TR/REC-html40');

$styles = $workbook->appendChild(new DOMElement('Styles'));
$style = $styles->appendChild(new DOMElement('Style'));
$style->setAttribute('ss:ID','Default');
$worksheet = $workbook->appendChild(new DOMElement('Worksheet'));
$worksheet->setAttribute('ss:Name','sheet1');
$xmltable = $worksheet->appendChild(new DOMElement('Table'));

// 使用数据填充
foreach ($data as $datarow) {
$xmlrow = $xmltable->appendChild(new DOMElement('Row'));
foreach (
$datarow as $datacell) {
$xmlcell = $xmlrow->appendChild(new DOMElement('Cell'));
$xmldata = $xmlcell->appendChild(new DOMElement('Data', $datacell));
$xmldata->setAttribute('ss:Type', is_numeric($datacell) ? 'Number' : 'String');
}
}

// 显示并退出
echo $dom->saveXML();
?>
kevinphpdotnet at stormtide dot ca
20 年前
在 Redhat 7.3 上使用 db4 时,您可能会在 apache 子进程上收到信号 11。安装测试脚本将报告 db4 正常工作,因为 cli 不会发出信号 11。解决方案是检查 apache 是否安装了 mod_rewrite,如果是,则取消 libdb.so.3 对它的引用,或者在没有 mod_rewrite 的情况下构建 apache。完成此操作后,您的子进程将不再死亡,并且 db4 将正常工作。如果您在 dba_open 后没有收到信号 11,请忽略此注释。
djm at web dot us dot uu dot net
25 年前
使用 db2,您需要调用 dba_sync() 以将数据写入磁盘;示例中缺少此操作。db2 使用
BTREE 文件格式,而不是更常见的 HASH。
不过,在我的测试中,BTREE 速度更快,因此这是一个好的
选择。
To Top