从PHP将SQLite数据库导出到Excel

从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,

如何从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, 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"""