将分页 PHP table 导出为 EXCEL、PDF、可打印

Export PHP table with pagination to EXCEL, PDF, PRINTABLE

如何将带分页的 php table 导出为 excel 和 pdf 格式?我在 youtube 上尝试了很多插件和教程,但仍然没有成功,但它们只能显示数据,而不是整个 table 本身。如果我可以将我的 table 转换为 PDF 或 Excel 格式,我想至少将我的 table 导出到 printable 版本。在我的 table 上,我最多有 100 行分页,每页 10 行。我怎样才能做到这一点?我需要你的专业知识。

PHP 导出到分支:

<?php

include "connect.php";
require('lib/js/fpdf.php');

$result = mysqli_query($conn,"SELECT * FROM tblSales");

$header = mysqli_query($conn,"SELECT UCASE('date','sales') 
    FROM 'INFORMATION_SCHEMA'.'COLUMNS' 
    WHERE 'TABLE_SCHEMA'='DB_NAME' 
    AND 'TABLE_NAME'='tblSales'
    and 'COLUMN_NAME' in ('date','sales')");

    $pdf = new FPDF();

$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
foreach($header as $heading) {
    foreach($heading as $column_heading)
        $pdf->Cell(95,12,$column_heading,1);
}
foreach($result as $row) {
    $pdf->Ln();
    foreach($row as $column)
        $pdf->Cell(95,12,$column,1);
}
$pdf->Output();


?>

AJAX代码:

$(document).on('click', '.export-branch-excel', function () {
    var branch = $("#branch-hidden-data").val();
    $.ajax ({
        url:"export-branch-excel.php",
        data: "id="+branch,
        method: "POST",
        dataType: "text",
        success: function(data){
            window.location = "export-branch-excel.php";
        }
    });
});

@lawrence agulto 我把这段代码改成了你说的程序类型。试试这个代码。

Download In excel:

            <?php

            include_once "connect.php";

                $query = mysqli_query($conn,"SELECT * FROM tblSales ORDER BY date DESC ");


                $columnHeader = "Column Name"."\t"."Column Name1"."\t"."Column Name2"."\t"."Column Name3"."\t";

                $setData='';
                if (mysqli_num_rows($query) > 0) {
                    while ($rec = mysqli_fetch_assoc($query)) {
                        $rowData = '';

                        foreach ($rec as $value) {
                            $value = '"'.$value.'"'."\t";
                            $rowData.=$value;
                        }
                        $setData.=trim($rowData)."\n";
                    }
                }


                header("Content-type: application/octet-stream");
                header("Content-Disposition: attachment; filename=Nobelz_Sushank.xls");
                header("Pragme: no-cache");
                header("Expires: 0");

                echo "\t\tSales Data\n";
                echo ucwords($columnHeader)."\n".$setData."\n";
            ?>

Download in pdf :

Download the FPDF library from here.

并根据需要更改 查询、table 名称和 TABLE_COLUMN_NAME

    <?php

    $result = mysqli_query($conn," Your QUery");

    $header = mysqli_query($conn,"SELECT UCASE(`COLUMN_NAME`) 
    FROM `INFORMATION_SCHEMA`.`COLUMNS` 
    WHERE `TABLE_SCHEMA`='DB_NAME' 
    AND `TABLE_NAME`='TABLE_NAME'
    and `COLUMN_NAME` in ('TABLE_COLUMN_NAME','TABLE_COLUMN_NAME1', 'TABLE_COLUMN_NAME2', 'TABLE_COLUMN_NAME3')");


    require('fpdf181/fpdf.php');

    $pdf = new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    foreach($header as $heading) {
        foreach($heading as $column_heading)
            $pdf->Cell(95,12,$column_heading,1);
    }
    foreach($result as $row) {
        $pdf->Ln();
        foreach($row as $column)
            $pdf->Cell(95,12,$column,1);
    }
    $pdf->Output();
  ?>

主题太宽泛了。您需要做的是:

  • 在页面上提供下载link(这意味着导出所需的任何参数都需要保存在会话中;或者您可以做一个更困难的"download after AJAX POST")
  • link 将 运行 使用必要的参数(见上文)进行分页,但 没有 分页。然后它将检索许多行。可能 行数。您已经完成了 95%。
  • 您使用 PHP 库(new PHPExcel for flexibility and features, Spout for speed) or a templating library (e.g. TBS)将这些行拉入 Excel 文件。 这是您需要充实的部分
  • 将 Excel 文件作为二进制下载发送。

PDF 版本是相同的(如果有点复杂,因为您通常需要自己编写 PDF - 有其他方法可以做,但需要访问服务器,例如 TBS + unoconv),除了你使用 PDF 库而不是 Excel 库。例如。 FPDF or TCPDF.

为了快速获得结果,如果您不关心格式化的 Excel 文件(背景、徽标、边框...),您 可以 替换 Excel 部分与 "fake" Excel - 创建一个 HTML table,一个 CSV 文件,或者更糟糕的是一个简单的未转义的 tab-separated 数据块,给它一个 XLS(X) 扩展名然后就可以了。根据我的经验,这可能会给您带来最糟糕的结果:95-97% 的时间都有效的东西 1。远大的期望,周期性地破灭,巨大的维护积压2。如果这是一个宠物项目,那就去吧;如果您在专业环境中需要它,请花点时间把它做好。


(1) 剩余的 3-5% 由 UTF-8 字符、引号、数字和日期组成,但 Excel 可以理解的导入格式等

(2) 添加日期格式。改进报价。检测UTF8。检测实际上是 ISO-8859-15 的 UTF8。 等等,未转义。等等等等。哦,而且每次都必须在 昨天 完成。为什么它 仍然 不起作用?