【问题标题】:PHP excel - data looping?PHP excel - 数据循环?
【发布时间】:2011-04-04 23:15:34
【问题描述】:

我有一个数据数组。

所以基本格式是

$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 那么,你如何循环呢?

或者是否有内置函数可以将数组转换为表格?

【问题讨论】:

    标签: php arrays phpexcel


    【解决方案1】:

    您可以像这样设置数组中的数据:

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

    fromArray 适用于二维数组。其中第一个参数是二维数组,第二个参数是空值时使用什么,最后一个参数是左上角的位置。

    否则你需要遍历数据:

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

    【讨论】:

    • @Mark Ba​​ker 已修复,谢谢。我非常感谢你的工作。
    • 我们在上面的 foreach 循环中从哪里得到 $rows$columns
    • 您可能应该注意二维数组有效,但仅适用于常规数组。
    • 雅各布的回答很好,它对我帮助很大,而且我节省了很多时间。
    • $rows 是您的二维数组(问题中的 $sheets)...我将更新答案以消除混淆。
    【解决方案2】:
    $rowID = 1;
    foreach($sheet as $rowArray) {
       $columnID = 'A';
       foreach($rowArray as $columnValue) {
          $objPHPExcel->getActiveSheet()->setCellValue($columnID.$rowID, $columnValue);
          $columnID++;
       }
       $rowID++;
    }
    

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

    【讨论】:

    • 无法真正与 PHPExcel 开发者竞争 :D
    • P.S.我猜 PHP 中字符递增的方式使得使用 Excel 单元格变得更加容易:D
    • @Jacob - 使用 PHPExcel 时,字符递增绝对有用……我经常使用这个技巧。
    【解决方案3】:

    据我所知,在使用 PHP excel 填充工作表时,您不需要知道最终 Excel 工作表的高度和宽度。您可以只使用嵌套的 foreach 循环来读取所有嵌套数组并使用适当的变量来构建单元格引用并将它们添加到工作表中。该插件将处理大小。

    【讨论】:

    • 是的,我的问题是,你如何循环播放它?
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2017-10-08
    • 2018-01-21
    • 2011-06-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多