将分页 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。 等等,未转义。等等等等。哦,而且每次都必须在 昨天 完成。为什么它 仍然 不起作用?
如何将带分页的 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。 等等,未转义。等等等等。哦,而且每次都必须在 昨天 完成。为什么它 仍然 不起作用?