将sql输出行插入excel文件

时间:2013-04-30 06:58:28

标签: php sql excel

我在sql表中有150行和40列..我正在网页中显示整个表..现在,我想要做的是在该网页上创建一个链接整个表格的链接将它插入一个excel文件(如果它创建一个新的excel文件,或者修改现有的一个并不重要)...现在我可以通过使用(PHPExcel库)手动完成," objPHPExcel-> setCellValue(' C5',$ v)" ...但我必须写这样40次(在每个语句中更改' $ v'变量)它内部循环将运行150次..因此我不想这样做..

现在我想知道我是否可以在excel表格中逐行插入表格。就像当我插入一行时,它会插入d行的整个单元格。这样会很容易。 .so我想知道是否有任何特定的命令来做这个..

如果没有,请使用其他替代方法。我想做的就是使用php将整个sql表导出到excel文件中。

2 个答案:

答案 0 :(得分:0)

因此,使用PHPExcel认真提供的fromArray()方法,允许您在一次调用中从一个数组中写入整行或整个单元格块。

查看示例并阅读文档总是有帮助

附加说明

顺便提一下,$objPHPExcel->setCellValue('C5', $v)仅在$objPHPExcel是工作表时才有效,大部分示例都使用$ objPHPExcel作为工作簿(即工作表集合)搞糊涂了

修改

要从数据库中获取结果,请使用

sqlsrv_fetch_array($tsql, SQLSRV_FETCH_ASSOC)

sqlsrv_fetch_array($tsql, SQLSRV_FETCH_NUMERIC)

编辑2

检查数据库如何设置为处理NULL返回;但是使用

$objPHPExcel->getActiveSheet()->fromArray($rows, 0, 'A'.$rowCNT);

应该将数据库结果中的所有NULL值设置为PHPExcel中的0值

答案 1 :(得分:0)

最简单的方法是导出.csv文件,也可以通过excel读取。 您所要做的就是创建此页面:

<?
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0"); 
$link = mysql_connect('db', 'dblogin', 'dbpasswd');
@mysql_select_db('dbname') or die( "Unable to select database");
$query=mysql_query("SELECT * FROM whatever");
$j=0;
$nbField = mysql_num_fields($query);
while ($j < $nbField) {
    echo mysql_field_name($query,$j).";";
$j++;   
}
echo "\n";
while ($row = mysql_fetch_array($query, MYSQL_NUM)) { echo implode(";", $row)."\n"; } 
?>

然后你插入一个直接指向这个php页面的链接,它将下载csv文件。