我有下一个Excel表,第一列中有日期,其他数据中有一些数据(B,C)。
1
2
要做到这一点,你需要在一小时内将每行和每列的数据相加(不知道怎么说)并乘以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;
我认为我的2D数组有些东西,因为我可以看到我的数组键很糟糕(不是1-24小时)。
将数据用于$data[1..29-31][1-24]
或其他任何二维数组的代码应该是什么?或者可以通过其他方式从图片#3获取表格?
答案 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.
}