gpt4 book ai didi

从数据库导出时 PHPexcel 库错误

转载 作者:行者123 更新时间:2023-11-29 04:44:58 25 4
gpt4 key购买 nike

我正在使用 PHPexcel 库进行报告。当我使用静态值时它运行良好,但是当我尝试将 MySQL 数据库中的数据导出到 PHPexcel 时,

它总是给我这个错误

Warning: Cannot modify header information - headers already sent 

我试过 ob_start() 函数,但是当我打开我下载的 excel 时,它是空的

这是我的 PHPexcel 代码:

<?php

include("conn.php");

$query ="Select * from info";
$result = mysql_query($query);



/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();




// Add some data
$row1=1;
$row2=1;
$row3=1;

echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);


while($row = mysql_fetch_array($result))
{
$let1 = "A".$row1."";
$let2 = "B".$row2."";
$let3 = "C".$row3."";

$objPHPExcel->getActiveSheet()->SetCellValue($let1, $row['id']);
$objPHPExcel->getActiveSheet()->SetCellValue($let2, $row['name']);
$objPHPExcel->getActiveSheet()->SetCellValue($let3, $row['age']);

$row1++;
$row2++;
$row3++;
}

$objPHPExcel->getActiveSheet()->getStyle("A1:C1")->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle("A1:C1")->getFont()->setSize(20);
$objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:C1');

$objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray(
array(
'fill' => array(
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'color' => array('rgb' => 'FF0000')
)
)
);


header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename=\"filename.xlsx\"");
header("Cache-Control: max-age=0");

exit();

?>

它可以完美地处理静态值,但是当我尝试动态添加值时,它就搞砸了。请帮忙,提前谢谢你

最佳答案

查看您的代码,您的 header() 调用表明页面内容应被视为电子表格,但您没有从电子表格对象创建任何输出。删除所有输出(您的 echo 调用),因为不可能拥有它,将您的 header 调用移至文件顶部,并从您的 Excel 类中回显原始输出。

代码如下。我移动了 header ,去除了一些垃圾并添加了 PHPExcel 手册建议的写入 STDOUT 的方式。

<?php

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename=\"filename.xlsx\"");
header("Cache-Control: max-age=0");

/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

include("conn.php");

$query ="Select * from info";
$result = mysql_query($query);

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Add some data
$row1=1;
$row2=1;
$row3=1;

$objPHPExcel->setActiveSheetIndex(0);

while($row = mysql_fetch_array($result))
{
$let1 = "A".$row1."";
$let2 = "B".$row2."";
$let3 = "C".$row3."";

$objPHPExcel->getActiveSheet()->SetCellValue($let1, $row['id']);
$objPHPExcel->getActiveSheet()->SetCellValue($let2, $row['name']);
$objPHPExcel->getActiveSheet()->SetCellValue($let3, $row['age']);

$row1++;
$row2++;
$row3++;
}

$objPHPExcel->getActiveSheet()->getStyle("A1:C1")->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle("A1:C1")->getFont()->setSize(20);
$objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:C1');

$objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray(
array(
'fill' => array(
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'color' => array('rgb' => 'FF0000')
)
)
);

// Untested... pulled from the manual as the way to write with PHPExcel
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');

?>

关于从数据库导出时 PHPexcel 库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com