gpt4 book ai didi

php - 循环遍历 PHPExcel 中的列和行以创建对象

转载 作者:行者123 更新时间:2023-12-04 21:54:08 25 4
gpt4 key购买 nike

我正在使用 PHPExcel 库循环浏览我的 excel 电子表格。这是我当前的脚本:

try
{
$inputfiletype = PHPExcel_IOFactory::identify($inputfilename);
$objReader = PHPExcel_IOFactory::createReader($inputfiletype);
$objPHPExcel = $objReader->load($inputfilename);
$r = array( 'd' => true );
}
catch(Exception $e)
{
die('Error loading file "'.pathinfo($inputfilename,PATHINFO_BASENAME).'": '.$e->getMessage());
$r = array( 'd' => false );
}

// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

// Loop through each row of the worksheet in turn
for ($row = 1; $row <= $highestRow; $row++)
{
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
echo $rowData[0][0] . '</br>';

}

这是我的电子表格:

enter image description here

我要做的是遍历每一行,忽略空值并生成一个具有列名的对象。对于上图中的示例,第 5 行将产生:
{HVHV001OXLG:{
A5AR:"152",
A5AM:"988",
A5AL:"100"
}
}

是否可以从我的电子表格格式中生成类似的内容?

最佳答案

读取第 1 行以获取列标题列表;这提供了一个航向图。将第 5 个参数用于 rangeToArray() 可能是个好主意。这样您就可以获得按行/列号索引的数组,因此您可以使用列地址轻松查找 map 。

然后循环遍历第 2 行的数据行,再次返回一个行/列索引数组,以便您可以轻松检查标题映射,测试包含值的单元格,并根据列标题查找它们的列地址。

就像是:

$highestRow = $sheet->getHighestRow(); 
$highestColumn = $sheet->getHighestColumn();

$columnLoopLimiter = $highestColumn;
++$columnLoopLimiter;
// get the column headings as a simple array indexed by column name
$headings = $sheet->rangeToArray('A1:' . $highestColumn . 1, NULL, TRUE, FALSE, TRUE)[1];

// Loop through each data row of the worksheet in turn
for ($row = 2; $row <= $highestRow; $row++)
{
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE, TRUE);
echo $rowData[$row]['A'], '</br>';
for ($column = 'B'; $column !== $columnLoopLimiter; ++$column) {
if (!empty($rowData[$row][$column])) {
echo $headings[$column], ':', $rowData[$row][$column], '</br>';
}
}
}

注意 $column !== $columnLoopLimiter; , 我增加了 $columnLoopLimiter之前到最后一列之后的列,以便我们可以执行 !==比较而不是 <= .这利用了 PHP 的 perl 风格的字符增量器,但确保我们在增量器从 Z 循环到 AA 时进行干净的比较。

关于php - 循环遍历 PHPExcel 中的列和行以创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48167227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com