我需要将数据库中的数据导出HTML表格尽可能轻松地导出到 xlsx文件。
我尝试了PHPExcel
和一些JS插件,但失败了。
有没有新的解决方案?
我发现的一切都差不多有10年了。
这就是我创造的:
我的HTML表单:
<form action="download.php">
<input type="submit" value="Export" />
</form>
我的PHPExcel代码(文件:download.php):
<?php
require_once "../Classes/PHPExcel.php";
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'hello world!');
$objPHPExcel->getActiveSheet()->setTitle('Chesse1');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="helloworld.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
?>
当我点击该按钮时,它会下载该文件,但我无法打开它,因为“格式错误”。
我也试过这个视频教程: https://www.youtube.com/watch?v=4dc3a4isHNE&t
导出Excel文件但出现了另一个问题。
我遇到的问题是错误的字符集。 我需要使用以下字符:ě,š,č,ř,ž,ý,á,í等等,这些字符完全搞砸了。
答案 0 :(得分:0)
更新回答:
<?php
$conn = new mysqli('localhost', 'root', '');
mysqli_select_db($conn, 'xlsexport');
$setSql = "SELECT `ur_Id`,`ur_username`,`ur_password` FROM `tbl_user`";
$setRec = mysqli_query($conn, $setSql);
$columnHeader = '';
$columnHeader = "Sr NO" . "\t" . "User Name" . "\t" . "Password" . "\t";
$setData = '';
while ($rec = mysqli_fetch_row($setRec)) {
$rowData = '';
foreach ($rec as $value) {
$value = '"' . $value['id'] . '"' . "\t".'"' . $value['ur_username'] . '"'."\t".'"' . $value['ur_password'] . '"';
$rowData .= $value;
}
$setData .= trim($rowData) . "\n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename = User_Detail_Reoprt.xlsx");
header("Pragma: no-cache");
header("Expires: 0");
echo ucwords($columnHeader) . "\n" . $setData . "\n";
?>
答案 1 :(得分:0)
我在代码中更改了格式并添加了缓冲区清理。
<?php
require_once "../Classes/PHPExcel.php";
$objPHPExcel = new PHPExcel();
header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header('Content-Disposition: attachment;filename="helloworld.xls"');
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->getCell('A20')->setValue("TEST PHPEXCEL");
$objPHPExcel->getActiveSheet()->setTitle('Chesse1');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
ob_end_clean();
$objWriter->save('php://output');
?>
有时Excel2007
与Excel5
发生冲突。它取决于PHPExcel中可用的库文件。下载后我有同样的文件无法打开的问题。所以我改为Excel5
已插入示例数据以检查是否在excelsheet中出现数据。您可以将其替换为数据库变量。
同样ob_end_clean()
有助于避免缓存缓存。
希望这有帮助。
答案 2 :(得分:0)
<?php
if (function_exists('mb_internal_encoding')) {
$oldEncoding=mb_internal_encoding();
mb_internal_encoding('latin1');
}
require_once 'addons/PHPExcel/PHPExcel/IOFactory.php'; //Update your Path for PHPExcel Class
$objPHPExcel = new PHPExcel();
$sheet = $objPHPExcel->getActiveSheet();
$sheet->setTitle("Template Title");
$sheet->getColumnDimension('A')->setWidth(30);
$sheet->SetCellValue('A1', 'hello world!');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
if (function_exists('mb_internal_encoding')){
mb_internal_encoding($oldEncoding);
}
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=helloworld.xlsx");
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
?>