2013-04-30 131 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文件。