将Excel表转换为2d数组

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

1。

在这里输入图像说明

2。

在这里输入图像说明

我想把它转换成表格,如图3: 在这里输入图像说明

要做到这一点,你需要在一个小时内把每行和每列的数据加起来(不知道怎么说),并乘以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; } 

但是,而不是工作代码,我得到的错误 在这里输入图像说明

22号线:

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

我认为,与我的二维数组和我可以看到我的数组键是坏的(不是1-24几个小时)。

应该是什么代码来获取我的数据在二维数组像$data[1..29-31][1-24]或任何其他? 或者可能是从图片#3得到表格的其他方式?

因为你的行号是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. }