【问题标题】:PHPSpreadhseet: Not getting output while export data from my database even not a single error?PHPSpreadhseet:从我的数据库导出数据时没有得到输出,甚至没有一个错误?
【发布时间】:2020-02-24 09:21:42
【问题描述】:

我将代码从 PHPexcel 更改为 PHPSpreadsheet,每个数据都是动态的,并且来自 Mysql,但我的少数数据没有导出,即使我 没有得到任何数据错误和数据在我 print_r($name1) 变量时显示, 任何帮助或建议表示赞赏 -

这是我的转换代码 -

    $inn_table = "";     

for($i=0;$i<count($labels);$i++) {

        if($result['qualification']['dd1']!="") {

            for($j=0;$j<count($dd1);$j++) {
                $temp = explode(">",$dd1[$j]);    


                if($temp[0]==$labels[$i]) {
                    $name = explode(">",$dd1[$j]);
                    echo '<pre>';
                    print_r($name[1]);
                     $inn_table .= '<td>'.$name[1].'</td>'; 
                }
            }
        }

         echo $inn_table; 

Print_r 输出 -

是的 甲类 其他 TAS 6

我如何在 PHPSpreadheet 的帮助下将其导出到 excel 中

简单例子-

Check labels

它检查标签,如您在我的代码中看到的那样,并将数据放在与图片中所见相同的标签列单元格中,就像它与媒体类型匹配一样,它在媒体类型行中打印,如图所示

【问题讨论】:

  • 欢迎来到 SO。导出数据的确切代码很大程度上取决于所需的结果。很难猜出您到底需要什么以及您已经尝试过什么。 Docs 比较大,有一些例子。
  • @EugeneAnisiutkin 我的 excel 工作表标题已经定义,所以这段代码检查带有标签的数据,如您所见 $temp[0]==$labels[i] 和当数据与标题匹配时,它把它放在我只需要的同一个标题列中将该数据导出到 excel
  • 能贴出所有代码吗?
  • @SimoneRossaini 我更新了我的代码请检查一次。
  • @ama22211 你为什么使用 table ?您可以使用数据库中的数据设置任何行

标签: php phpexcel phpspreadsheet


【解决方案1】:

这是一个你可以编辑的例子(在这个例子中我使用 composer 来安装 PHPSpreadheet):

require 'DB.php';
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as xlsx; // Instead PHPExcel_Writer_Excel2007
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing as drawing; // Instead PHPExcel_Worksheet_Drawing
use PhpOffice\PhpSpreadsheet\IOFactory as io_factory; // Instead PHPExcel_IOFactory


$query = 'SELECT * FROM ? WHERE ?';
$result = $mysqli->query($query);

$objPHPExcel    =   new Spreadsheet();


$objPHPExcel->setActiveSheetIndex(0);
//NAME WORKSHEET
$objPHPExcel->getActiveSheet()->setTitle("Test");


$objPHPExcel->getActiveSheet()
    ->getPageSetup()
    ->setOrientation(PhpOffice\PhpSpreadsheet\Worksheet\PageSetup::ORIENTATION_LANDSCAPE);

$objPHPExcel->getActiveSheet()
    ->getPageSetup()
    ->setPaperSize(PhpOffice\PhpSpreadsheet\Worksheet\PageSetup::PAPERSIZE_A4);

$objPHPExcel->getActiveSheet()->SetCellValue('A12', 'ROW1');
$objPHPExcel->getActiveSheet()->SetCellValue('B12', 'ROW2');

$rowCount   =   1;

}
while($row  =   $result->fetch_assoc()){


      //BORDER  
      $objPHPExcel->getActiveSheet()->getStyle('A'.$rowCount)->applyFromArray($styleArray);
      $objPHPExcel->getActiveSheet()->getStyle('B'.$rowCount)->applyFromArray($styleArray);


      //VALUE
      $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['row1']);
      $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['row2']);


    $rowCount++; //ADD COUNT 
}

$objWriter = io_factory::createWriter($objPHPExcel, 'Xlsx');

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=EXAMPLE.xlsx");
header("Content-Transfer-Encoding: binary ");

ob_end_clean();
ob_start();
$objWriter->save('php://output');
exit;   

db信息和相关查询只是示例,记得准备stmt

【讨论】:

  • 感谢@Simone的帮助,但由于我已经有来自不同表的动态行标题并且打印成功,只需要根据标题行与标题匹配后打印动态列。
  • //VALUE部分你可以看到如何为行(不是标题)设置值,例如$objPHPExcel-&gt;getActiveSheet()-&gt;SetCellValue('A'.$rowCount, $row['row1']);将打印row1的值 i> 从第二个单元格开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 2020-12-23
  • 1970-01-01
相关资源
最近更新 更多