2013-04-30 98 views
0

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

现在我想知道如果我可以在Excel表格中逐行插入表格......就像插入一行时,它会插入d行的整个单元格。这样它会很容易..所以我想知道如果再这样做的任何特定的命令..

如果不是,笏其他选择呢,我有做this..all我想要做的是将整个SQL表导出到使用PHP的Excel文件..

+0

尝试http://kevinjmcmahon.net/articles/24/exporting-mysql-table-data-to-excel-using-php/或http://www.coderelic.com/2012/01/export-data - 从数据库到CSV/ – 2013-04-30 07:01:05

回答

0

因此,请使用PHPExcel深思熟虑的fromArray()方法,该方法允许您在数组中调用一整行或整个单元块。

综观例子和阅读文档总是帮助

附加说明

顺便说一句,如果$objPHPExcel是一个工作表中,大部分示例使用$ objPHPExcel为工作簿$objPHPExcel->setCellValue('C5', $v)只会工作(即收集工作表)所以不要混淆

编辑

取出来自数据库的结果,使用

sqlsrv_fetch_array($tsql, SQLSRV_FETCH_ASSOC) 

sqlsrv_fetch_array($tsql, SQLSRV_FETCH_NUMERIC) 

EDIT 2

检查数据库设置方式处理NULL的回报;但使用

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

应PHPExcel

+0

这是我使用..问题是它显示每个值(来自数据库的值)两次在Excel表...其次,一些数据库中的值为0,对于所有这些值,它在Excel中显示一个空单元格... while($ rows = sqlsrv_fetch_array($ tsql)) { $ objPHPExcel-> getActiveSheet() - > fromArray($ rows,NULL,'A'。$ rowCNT); $ rowCNT ++; } – bhoots21304 2013-04-30 17:33:48

+0

选择您的数据库查询,以便您不返回枚举和关联:一个__or__另一个......所有涉及到您如何处理数据库查询 – 2013-04-30 18:17:40

+0

至于0值,首先确保您'从数据库查询中取回0而不是NULL值 – 2013-04-30 18:19:18

0

最简单的方法是导出为.csv文件,该文件也可以通过读取Excel设置从数据库中结果的所有NULL值设置为0值。 所有你需要做的就是创建这个页面:

<? 
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文件。