【发布时间】:2013-10-24 14:42:25
【问题描述】:
如何将 SQLite 文件从 PHP 脚本导出为 Excel?
我目前将表格和数据导出为纯 HTML 表格,代码如下:
$dbh = new PDO('sqlite:' . $path . "/" . $lang . "/" . $dbname . ".sqlite");
$sql = "SELECT tbl_name FROM sqlite_master WHERE type='table';";
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
$sql = "SELECT * FROM " . $row['tbl_name'];
$sub_stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
$sub_stmt->execute();
echo "<br><br><table border=1><thead>". $row['tbl_name'] ."</thead><tbody>";
while ($sub_row = $sub_stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
foreach ($sub_row as $key => $value) {
$titles .= "<td>" . $key . "</td>";
$sub_row_table[] = "<td>" . $sub_row[$key] . "</td>";
}
if(!$titlesPrinted) {
echo "<tr>" . $titles . "</tr>";
$titlesPrinted = true;
}
echo "<tr>";
foreach($sub_row_table as $value) {
echo $value;
}
echo "</tr>";
}
echo "</tbody></table>";
}
$dbh = null;
但是,如果 sqlite 表有大量数据,则此方法效果不佳,页面需要一段时间才能加载所有内容。理想情况下,我更愿意创建链接来下载 Excel 工作表(或者可以将所有工作表都导出到一个 Excel 工作簿文件中,并将所有工作表作为每个表?),或者至少链接到弹出/显示表而不是用完很多回显到用户屏幕的资源。
编辑:
忘了提到我的 sqlite 数据包含一些使用 HTML 的列,并且很多数据使用重音符号,例如:è、é、ê、à、ä 等。
【问题讨论】:
-
你考虑过使用 PHPExcel 吗? phpexcel.codeplex.com
-
嗯,很有趣,会研究 PHPExcel,谢谢@KimGysen
-
嘿@KimGysen,我能够使用 PHPExcel 完成所有工作,您能否写下您的评论作为答案,以便我可以将其标记为已关闭? :)
-
酷它为你工作。我也经常使用 PHPExcel,我很高兴找到了这个插件。格兹