从PHP将SQLite数据库导出到Excel
如何从PHP脚本中将SQLite文件导出为Excel 我目前将表和数据导出为纯HTML表,代码如下:从PHP将SQLite数据库导出到Excel,php,excel,sqlite,Php,Excel,Sqlite,如何从PHP脚本中将SQLite文件导出为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,
$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;
$dbh=newpdo('sqlite:'.$path./'$lang./'$dbname..sqlite');
$sql=“从sqlite_master中选择tbl_名称,其中type='table';”;
$stmt=$dbh->prepare($sql,数组(PDO::ATTR_CURSOR,PDO::CURSOR_SCROLL));
$stmt->execute();
而($row=$stmt->fetch(PDO::fetch_ASSOC,PDO::fetch_ORI_NEXT)){
$sql=“从“$row['tbl_name'”中选择*;
$sub_stmt=$dbh->prepare($sql,数组(PDO::ATTR_CURSOR,PDO::CURSOR_SCROLL));
$sub_stmt->execute();
回显“
”$row['tbl_name']”;
while($sub_row=$sub_stmt->fetch(PDO::fetch_ASSOC,PDO::fetch_ORI_NEXT)){
foreach($key=>$value的子行){
$titles.=''.$key.'';
$sub_row_table[]=”.$sub_row[$key]。”;
}
如果(!$titlesPrinted){
回声“$titles.”;
$titlesPrinted=true;
}
回声“;
foreach($value形式的子行表){
echo美元价值;
}
回声“;
}
回声“;
}
$dbh=null;
但是,如果sqlite表中有大量数据,那么这并不是很好,页面需要一段时间来加载所有内容。理想情况下,我更愿意创建链接来下载Excel工作表(或者可能将所有工作表导出到一个Excel工作簿文件中,并将所有工作表作为每个表?),或者至少创建链接来弹出/显示该表,而不是使用大量资源来回显用户屏幕
编辑:忘了提到我的sqlite数据包含一些使用HTML的列,很多数据使用重音符号,如:è、è、è、è、è等。我认为您真正想要做的是创建一个CSV文件。PHP中有一个用于编写此类文件的特定函数,以下是链接: 正如您在函数的文档中所看到的,函数处理包含不同字段和分隔符的数组,我向您粘贴示例代码,我认为这非常清楚:
<?php
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>
Excel会自动打开解释特定分隔符的CSV文件(我认为这取决于区域配置,例如“;”),您应该选中此项以使用适当的分隔符
我希望这能有所帮助。PHPExcel是一个插件,它允许您从PHP动态处理Excel对象以进行读写操作
URL:您考虑过使用PHPExcel吗?嗯,很有意思,我会调查PHPExcel,谢谢@KimGysenHey@KimGysen,我能用PHPExcel解决所有问题,你能写下你的评论作为答案吗,这样我就可以把它标记为关闭吗?:)酷,这对你有用。我也经常使用PHPExcel,我很高兴找到了这个插件。GrzI忘了提到我的sqlite数据包含一些使用HTML的列,并且很多数据使用诸如:è、è、è、è等重音符号。
aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""