将Excel表转换为2d数组

时间:2016-02-07 00:28:31

标签: php arrays excel multidimensional-array phpexcel

我有下一个Excel表,第一列中有日期,其他数据中有一些数据(B,C)。

1

enter image description here

2

enter image description here

我希望将其转换为表格,如图3所示: enter image description here

要做到这一点,你需要在一小时内将每行和每列的数据相加(不知道怎么说)并乘以2400。 例如,从第一张图片我们得到(0.0022 + 0.0078 + 0.0021 + 0.0078)*2400≈47 - 第三张图中表格的第一个元素。

我正在尝试使用PHPExcel库:

$objPHPExcel = new PHPExcel();
$objPHPExcel = PHPExcel_IOFactory::load("data.xlsx");
$highestRow  = $objPHPExcel->getActiveSheet()->getHighestRow();
$day = 1;
$hour = 1;
$data = array(array());
for ($i = 1; $i < $highestRow + 1; $i++) {
    $cell1 = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, $i)->getValue();
    $cell2 = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(2, $i)->getValue();
    $data[$day][$hour] += $cell1 + $cell2;
    if($i % 2 == 0)  { $data[$day][$hour] *= 2400; $hour++; }
    if($i % 48 == 0) $day++;
    if($hour % 24 == 0) $hour = 1;
}

但是我没有工作代码而是出错 enter image description here

第22行:

$data[$day][$hour] += $cell1 + $cell2;

我认为我的2D数组有些东西,因为我可以看到我的数组键很糟糕(不是1-24小时)。

将数据用于$data[1..29-31][1-24]或其他任何二维数组的代码应该是什么?或者可以通过其他方式从图片#3获取表格?

1 个答案:

答案 0 :(得分:1)

您的第22行是

$data[$day][$hour] += $cell1 + $cell2;

您正在尝试增加尚未定义的$data[$day][$hour]。您需要在尝试增加它之前定义它。我不确定,它会使工作表像您期望的那样工作。但这将解决您遇到的错误。 (在第22行之前添加)

if(!isset($data[$day])) {
    $data[$day] = array(); //Setting the day which will get the hours in array
}
if(!isset($data[$day][$hour])) {
    $data[$day][$hour] = 0; //Setting the hours which will contain the incremented values for each hour. Setting it 0, the next code blocks will increment it. 
}