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

时间:2018-03-02 02:36:31

标签: javascript php jquery export-to-excel export-to-pdf

如何将我的php表格分页导出为ex​​cel和pdf格式?我在youtube上尝试了很多插件和教程仍然没有运气,但他们只显示数据而不是整个表本身。如果我可以将表格转换为PDF格式或Excel格式,我想将表格导出至少可打印版本。在我的桌子上,我有一个最多100行,每页10行。我怎样才能做到这一点?我需要你的专长。

Here is the screen shot of the table

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";
        }
    });
});

2 个答案:

答案 0 :(得分: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();
  ?>

答案 1 :(得分:0)

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

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

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

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

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

(2)添加日期格式。改善报价。检测UTF8。检测实际上是ISO-8859-15的UTF8。 等待,未转义。等等等等。哦,每次必须完成所有事情昨天。为什么仍然不起作用? 功能