通过PHP从SQL生成Excel

我正在使用下面的代码来从sql生成excel通过php.this是一个modeifed verion的工作代码..

工作代码(无错误)

<?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是资源,布尔在/home/content/58/9508458/html/psychiatric/subexcel.php在13行给出

警告:无法修改标题信息 – / home / content / 58/9508458 / html / psychiatric / phpxls /中的(已在/ home / content / 58/9508458 / html / psychiatric/subexcel.php:13开始输出) Writer.php在第67行

警告:无法修改标题信息 – / home / content / 58/9508458 / html / psychiatric / phpxls /中的(已在/ home / content / 58/9508458 / html / psychiatric/subexcel.php:13开始输出)第68行Writer.php

警告:无法修改标题信息 – / home / content / 58/9508458 / html / psychiatric / phpxls /中的(已在/ home / content / 58/9508458 / html / psychiatric/subexcel.php:13开始输出)第69行的Writer.php

警告:无法修改标题信息 – / home / content / 58/9508458 / html / psychiatric / phpxls /中的(已在/ home / content / 58/9508458 / html / psychiatric/subexcel.php:13开始输出)第70行Writer.php

警告:无法修改标题信息 – / home / content / 58/9508458 / html / psychiatric / phpxls /中的(已在/ home / content / 58/9508458 / html / psychiatric/subexcel.php:13开始输出) Writer.php 71行

现在,您在尝试查询数据库select数据库:

 $numrow12 = mysql_query("SELECT * FROM mastertable WHERE pdfstatus = 1 ORDER BY tstamp DESC"); mysql_select_db("brainoidultrafb", $link); 

这是行不通的。 只需交换订单,以便select数据库, 然后查询它:

 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'],); } 

对于你的第二个问题,使用: $sheet1[] =

将元素追加到$ sheet1数组中。 你在循环的每一次迭代之后都会replace它。

您可能需要在while循环之外初始化$sheet1以避免警告。 $sheet1 = array();