首页 文章

PHPExcel将HTML表导出到xlsx

提问于
浏览
0

我需要 export HTML table 尽可能容易地将数据库中的数据传送到 xlsx file .

我试过 PHPExcel 和一些JS插件,但 unsuccessfully .

有没有新的解决方案?

我发现的一切都差不多有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');

?>

当我单击按钮时,它会下载文件,但由于 "wrong format" ,我无法打开它 .

我也试过这个视频教程:https://www.youtube.com/watch?v=4dc3a4isHNE&t

导出Excel文件工作但出现了另一个问题 .

我遇到的问题是 wrong charset . 我需要使用像: ě,š,č,ř,ž,ý,á,í 等字符,这些字符完全搞砸了 .

2 回答

  • 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";  
    ?>
    
  • 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');
    
    ?>
    

    有时 Excel2007Excel5 发生冲突 . 它取决于PHPExcel中可用的库文件 . 下载后我有同样的文件无法打开的问题 . 所以我改为 Excel5

    已插入样本数据以检查是否在excelsheet中出现数据 . 您可以将其替换为数据库变量 .

    此外 ob_end_clean() 有助于避免缓存缓存 .

    希望这可以帮助 .

相关问题