2011-04-04 37 views
17

我有一個數組數組。PHP excel - 數據循環?

所以基本格式是

$sheet = array(
    array(
    'a1 data', 
    'b1 data', 
    'c1 data', 
    'd1 data', 
), 
    array(
    'a2 data', 
    'b2 data', 
    'c2 data', 
    'd2 data', 
), 
    array(
    'a3 data', 
    'b3 data', 
    'c3 data', 
    'd3 data', 
) 
); 

當我傳遞的數組,我不知道有多少列或行會出現。 我想要做的就是使用php excel創建一個Excel數組。

從我所看到的,設置數據的唯一方法就是使用 $objPHPExcel->getActiveSheet()->setCellValue('A1', $value);

所以我的問題是

你將如何遍歷所有的細胞?

記住可以說30列,說70行這將是AD70那麼,你如何循環呢?

或者是否有內置函數來將數組轉換爲表單?

回答

27

可以從陣列設置的數據如下所示:

$objPHPExcel->getActiveSheet()->fromArray($sheet, null, 'A1'); 

fromArray可與2D陣列。如果第一個參數是二維數組,則第二個參數是如果存在空值時使用的參數,最後一個參數是左上角應該是的位置。

否則,你將需要遍歷數據:

$worksheet = $objPHPExcel->getActiveSheet(); 
foreach($sheet as $row => $columns) { 
    foreach($columns as $column => $data) { 
     $worksheet->setCellValueByColumnAndRow($column, $row + 1, $data); 
    } 
} 
+0

@Mark Ba​​ker修好了,謝謝。我非常感謝你的工作。 – Jacob 2011-04-04 23:27:50

+0

我們在上面的foreach循環中獲得** $ rows **和** $ columns **的位置? – Aziz 2012-07-21 13:42:50

+0

你應該做一個說明,二維數組的工作,但只有在常規數組的情況下。 – 2012-12-14 22:06:07

0

據我所知,使用PHP excel填充工作表時,不需要知道最終Excel工作表的高度和寬度。您可以使用嵌套的foreach循環來讀取所有嵌套數組,並使用適當的變量來構建單元格引用並將其添加到工作表。該插件將處理大小。

+1

呀,我的問題是,你怎麼循環呢? – Hailwood 2011-04-04 23:21:27

22
$rowID = 1; 
foreach($sheet as $rowArray) { 
    $columnID = 'A'; 
    foreach($rowArray as $columnValue) { 
     $objPHPExcel->getActiveSheet()->setCellValue($columnID.$rowID, $columnValue); 
     $columnID++; 
    } 
    $rowID++; 
} 

$objPHPExcel->getActiveSheet()->fromArray($sheet); 
+3

無法真正與PHPExcel開發者競爭:D – Jacob 2011-04-04 23:25:23

+0

P.S.我猜PHP中字符增量的方式使得使用Excel單元格變得非常容易:D – Jacob 2011-04-04 23:26:30

+3

@Jacob - 使用PHPExcel時字符遞增絕對有用...我經常使用這個技巧。 – 2011-04-04 23:27:44