【问题标题】:Export SQLite database to Excel from PHP从 PHP 将 SQLite 数据库导出到 Excel
【发布时间】: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,我很高兴找到了这个插件。格兹

标签: php excel sqlite


【解决方案1】:

PHPExcel 是一个插件,允许您从 PHP 动态处理 Excel 对象以进行读写操作。

网址:http://phpexcel.codeplex.com

【讨论】:

    【解决方案2】:

    我认为您真正想要做的是创建一个 CSV 文件。 PHP中有一个特定的函数可以编写这种文件,这里是链接: fputscsv function

    正如您在函数的文档中看到的那样,该函数处理包含不同字段和分隔符的数组,我将我认为非常清楚的示例代码粘贴给您:

    <?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);
    ?>
    

    示例的输出(在本例中为 file.csv):

    aaa,bbb,ccc,dddd
    123,456,789
    """aaa""","""bbb"""
    

    Excel 会自动打开解释特定分隔符的 CSV 文件(我认为根据区域配置,这可能会有所不同,例如“;”),您应该检查此项以便使用适当的分隔符。

    我希望这会有所帮助。

    【讨论】:

    • 我忘了提到我的 sqlite 数据包含一些使用 HTML 的列,并且很多数据使用重音符号,例如:è、é、ê、à、ä 等。
    猜你喜欢
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多