Php 将Excel表格转换为二维数组
我有下一个Excel表格,第一列是日期,另一列是一些数据(B,C) 一, 二, 我想把它转换成如图3所示的表格: 要做到这一点,您需要在一小时内(不知道如何正确表达)将每行和每列的数据相加,然后乘以2400。 例如,从第一张图片中,我们得到了(0.0022+0.0078+0.0021+0.0078)*2400≈ 47-第三张图片中表格的第一个元素 我正在尝试使用PHPExcel库执行此操作:Php 将Excel表格转换为二维数组,php,arrays,excel,multidimensional-array,phpexcel,Php,Arrays,Excel,Multidimensional Array,Phpexcel,我有下一个Excel表格,第一列是日期,另一列是一些数据(B,C) 一, 二, 我想把它转换成如图3所示的表格: 要做到这一点,您需要在一小时内(不知道如何正确表达)将每行和每列的数据相加,然后乘以2400。 例如,从第一张图片中,我们得到了(0.0022+0.0078+0.0021+0.0078)*2400≈ 47-第三张图片中表格的第一个元素 我正在尝试使用PHPExcel库执行此操作: $objPHPExcel = new PHPExcel(); $objPHPExcel = PHP
$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;
}
我认为我的2D数组和我可以看到的数组键有问题(不是1-24小时)
在2D数组中获取数据(如
$data[1..29-31][1-24]
或任何其他数组)的代码应该是什么?或者可以通过其他方式从图片#3中获取表格吗?因为您的行号是22
$data[$day][$hour] += $cell1 + $cell2;
您正在尝试增加尚未定义的$data[$day][$hour]
。您需要在尝试增加它之前定义它。我不确定,它会使工作表像你期望的那样工作。但这将修复您得到的错误。(将其添加到第22行之前)
相关:事实上A1:A1487是左对齐的,A1488是右对齐的,这让我很担心。单元格中的左对齐通常表示文本;在本例中,日期时间的文本表示形式。如果这些是真实的日期时间,那么默认情况下它们都是右对齐的。哪一行是第22行?@Jeeped,这并不重要。我可以像$highestRow/48一样计算天数。@TaReQMahMooD我不明白这个问题。正如您看到的错误消息,它来自第22行。所以我只想知道上面代码中的哪一行是第22行。看来问题解决了。由于未声明数组,通知确实出现了,而且我在小时检测方面犯了一个小错误。而不是如果($hour%24==0)$hour=1;应该是:如果($hour%25==0)$hour=1;谢谢@TaReQ MahMooD。
$data[$day][$hour] += $cell1 + $cell2;
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.
}