我使用以下代码通过php从sql生成excel。这是一个工作代码的简化版本。
工作代码(无错误)
<?php
//documentation on the spreadsheet package is at:
//http://pear.php.net/manual/en/package.fileformats.spreadsheet-excel-writer.php
chdir('phpxls');
require_once 'Writer.php';
chdir('..');
$sheet1 = array(
array('eventid','eventtitle' ,'datetime' ,'description' ,'notes' ),
array('5' ,'Education Seminar','2010-05-12 08:00:00','Increase your WPM','' ),
array('6' ,'Work Party' ,'2010-05-13 15:30:00','Boss\'s Bday' ,'bring tacos'),
array('7' ,'Conference Call' ,'2010-05-14 11:00:00','access code x4321','' ),
array('8' ,'Day Off' ,'2010-05-15' ,'Go to Home Depot' ,'' ),
);
$sheet2 = array(
array('eventid','funny_name' ),
array('32' ,'Adam Baum' ),
array('33' ,'Anne Teak' ),
array('34' ,'Ali Katt' ),
array('35' ,'Anita Bath' ),
array('36' ,'April Schauer'),
array('37' ,'Bill Board' ),
);
$workbook = new Spreadsheet_Excel_Writer();
$format_und =& $workbook->addFormat();
$format_und->setBottom(2);//thick
$format_und->setBold();
$format_und->setColor('black');
$format_und->setFontFamily('Arial');
$format_und->setSize(8);
$format_reg =& $workbook->addFormat();
$format_reg->setColor('black');
$format_reg->setFontFamily('Arial');
$format_reg->setSize(8);
$arr = array(
'Calendar'=>$sheet1,
'Names' =>$sheet2,
);
foreach($arr as $wbname=>$rows)
{
$rowcount = count($rows);
$colcount = count($rows[0]);
$worksheet =& $workbook->addWorksheet($wbname);
$worksheet->setColumn(0,0, 6.14);//setColumn(startcol,endcol,float)
$worksheet->setColumn(1,3,15.00);
$worksheet->setColumn(4,4, 8.00);
for( $j=0; $j<$rowcount; $j++ )
{
for($i=0; $i<$colcount;$i++)
{
$fmt =& $format_reg;
if ($j==0)
$fmt =& $format_und;
if (isset($rows[$j][$i]))
{
$data=$rows[$j][$i];
$worksheet->write($j, $i, $data, $fmt);
}
}
}
}
$workbook->send('test.xls');
$workbook->close();
//-----------------------------------------------------------------------------
?>
从数据库中检索数据的修改代码(显示错误)
<?php
$numrow12 = mysql_query("SELECT * FROM mastertable WHERE pdfstatus = 1 ORDER BY tstamp DESC");
mysql_select_db("brainoidultrafb", $link);
chdir('phpxls');
require_once 'Writer.php';
chdir('..');
while($row = mysql_fetch_array($numrow12)) {
$sheet1 = array(
array('StudentID','Students Email' ,'Diagnosis','TimeStamp' ,),
array($row['student_id'] ,$row['email_id'],$row['diagnosis'],$row['tstamp'],),
);
}
$workbook = new Spreadsheet_Excel_Writer();
$format_und =& $workbook->addFormat();
$format_und->setBottom(2);//thick
$format_und->setBold();
$format_und->setColor('black');
$format_und->setFontFamily('Arial');
$format_und->setSize(8);
$format_reg =& $workbook->addFormat();
$format_reg->setColor('black');
$format_reg->setFontFamily('Arial');
$format_reg->setSize(8);
$arr = array(
'Calendar'=>$sheet1,
);
foreach($arr as $wbname=>$rows)
{
$rowcount = count($rows);
$colcount = count($rows[0]);
$worksheet =& $workbook->addWorksheet($wbname);
$worksheet->setColumn(0,0, 6.14);//setColumn(startcol,endcol,float)
$worksheet->setColumn(1,3,15.00);
$worksheet->setColumn(4,4, 8.00);
for( $j=0; $j<$rowcount; $j++ )
{
for($i=0; $i<$colcount;$i++)
{
$fmt =& $format_reg;
if ($j==0)
$fmt =& $format_und;
if (isset($rows[$j][$i]))
{
$data=$rows[$j][$i];
$worksheet->write($j, $i, $data, $fmt);
}
}
}
}
$workbook->send('Submissions.xls');
$workbook->close();
//-----------------------------------------------------------------------------
?>
显示以下错误
警告:mysql_fetch_array()要求参数1为资源,布尔值在第13行的/home/content/58/9508458/html/psychiatric/subexcel.php中给出
警告:无法修改标题信息 - 已在/ home / content / 58/9508458 / html / psychiatric中发送的标题(输出从/home/content/58/9508458/html/psychiatric/subexcel.php:13开始)第67行的/phpxls/Writer.php
警告:无法修改标题信息 - 已在/ home / content / 58/9508458 / html / psychiatric中发送的标题(输出从/home/content/58/9508458/html/psychiatric/subexcel.php:13开始)第68行的/phpxls/Writer.php
警告:无法修改标题信息 - 已在/ home / content / 58/9508458 / html / psychiatric中发送的标题(输出从/home/content/58/9508458/html/psychiatric/subexcel.php:13开始)第69行的/phpxls/Writer.php
警告:无法修改标题信息 - 已在/ home / content / 58/9508458 / html / psychiatric中发送的标题(输出从/home/content/58/9508458/html/psychiatric/subexcel.php:13开始)第70行的/phpxls/Writer.php
警告:无法修改标题信息 - 已在/ home / content / 58/9508458 / html / psychiatric中发送的标题(输出从/home/content/58/9508458/html/psychiatric/subexcel.php:13开始)第71行的/phpxls/Writer.php
答案 0 :(得分:4)
现在,您在尝试查询数据库后选择数据库:
$numrow12 = mysql_query("SELECT * FROM mastertable WHERE pdfstatus = 1 ORDER BY tstamp DESC");
mysql_select_db("brainoidultrafb", $link);
那不行。只需交换订单,然后选择数据库,然后查询它:
mysql_select_db("brainoidultrafb", $link);
$numrow12 = mysql_query("SELECT * FROM mastertable WHERE pdfstatus = 1 ORDER BY tstamp DESC");
至于你的第二个问题,你在循环的每次迭代中都覆盖$sheet1
。这样做:
$sheet1 = array(
array('StudentID','Students Email' ,'Diagnosis','TimeStamp' ,)
);
while($row = mysql_fetch_array($numrow12)) {
$sheet1[] = array($row['student_id'], $row['email_id'], $row['diagnosis'], $row['tstamp'],);
}
答案 1 :(得分:0)
对于您的第二个问题:
$sheet1[] =
将元素附加到$ sheet1数组。在循环的每次迭代之后,你正在替换它。
您可能希望在while循环之外初始化$sheet1
以避免警告。 $sheet1 = array();