2011-04-04 105 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