使用分页导出PHP表格为EXCEL,PDF,PRINTABLE

问题描述 投票:2回答:2

如何将我的php表格分页导出为ex​​cel和pdf格式?我在youtube上尝试了许多插件和教程仍然没有运气,但他们只显示数据而不是整个表本身。如果我可以将表格转换为PDF或Excel格式,我想更好地将表格导出到至少可打印的版本。在我的桌子上,我有一个最多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";
        }
    });
});
javascript php jquery export-to-excel export-to-pdf
2个回答
2
投票

@lawrence agulto如你所说,我把这个代码更改为程序类型。试试这个代码。

在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";
            ?>

下载pdf:

Download the FPDF library from here.

并根据您的需要更改查询,表名称和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();
  ?>

0
投票

这个主题过于宽泛。你需要做的是:

  • 在页面上提供下载链接(这意味着导出所需的任何参数都需要保存在会话中;或者你可以在AJAX POST后进行更难的“下载”)
  • 该链接将运行您用于分页的相同查询,具有必要的参数(参见上文),但没有分页。然后它将检索许多行。可能是大量的行。你已经完成了95%的工作。
  • 你使用PHP库(new PHPExcel的灵活性和功能,Spout的速度)或模板库(如TBS)将这些行拉入Excel文件。这是你需要充实的部分。
  • 沿Excel文件发送二进制下载。

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

为了快速获得结果,如果您不关心格式化的Excel文件(背景,徽标,边框...),您可以使用“假”Excel替换Excel部件 - 创建HTML表格,CSV文件,甚至更糟糕的是,一个简单的非转换标签分隔的数据blob,给它一个XLS(X)扩展并继续。从我的经验来看,这给你带来了最糟糕的结果:95-97%的时间有效.1。期望很高,周期性破灭,大量维护积压2。如果这是一个宠物项目,那就去吧;如果你需要在专业的环境中,请花点时间做正确的事。


(1)其余3-5%由UTF-8字符,引号,数字和日期组成,以任何格式书写,但Excel理解为导入等。

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

© www.soinside.com 2019 - 2024. All rights reserved.