gpt4 book ai didi

php - 使用 PHPExcel 读取包含合并单元格的 Excel 工作表

转载 作者:行者123 更新时间:2023-12-04 19:53:24 25 4
gpt4 key购买 nike

我想完整地阅读 Excel 工作表并使用 AJAX 将每一行发送到另一个页面进行处理。因此,我使用以下代码将 Excel 工作表数据转换为 JSON 数组(引用库中提供的 PHPExcel 示例):

<?php
error_reporting(E_ALL);
set_time_limit(0);

date_default_timezone_set('Asia/Kolkata');
set_include_path(get_include_path() . PATH_SEPARATOR . 'PHPExcel-1.8/Classes/');
require_once 'PHPExcel/IOFactory.php';

$inputFileType = PHPExcel_IOFactory::identify($fileLocation);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setLoadSheetsOnly("SHEETNAME");
$objPHPExcel = $objReader->load($fileLocation);

$data = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
?>

此处 $filelocation 是上传文件的位置,该文​​件将被读取以使用 AJAX 将行单独发送到另一个页面。我在 javascript 中使用 $data 作为

DataToBeUploaded=<?php echo json_encode($data);?>;

但 Excel 工作表包含一些合并单元格,因此 PHPExcel 无法读取这些合并单元格中的值。因此,这些单元格中的值被读取为 NULL。

有没有一种方法可以将合并单元格的左上角单元格值用于所有后续单元格? (实际上在我的例子中,单元格仅垂直合并)

例如。我有(假设行从 1 开始编号,列从 A 开始)

merged cells excel sheet example

此处 PHPExcel 读取为:

data[1][A]='abc'
$data[1][B]='123'

$data[2][A]=''
$data[2][B]='456'

$data[3][A]=''
$data[3][B]='789'

我希望代码段产生这些值:

data[1][A]='abc'
$data[1][B]='123'

$data[2][A]='abc'
$data[2][B]='456'

$data[3][A]='abc'
$data[3][B]='789'

最佳答案

引用https://github.com/PHPOffice/PHPExcel/issues/643

我写了以下片段:

$referenceRow=array();
for ( $row = 2; $row <= $noOfBooks; $row++ ){
for ( $col = 0; $col < 7; $col++ ){
if (!$objPHPExcel->getActiveSheet()->getCellByColumnAndRow( $col, $row )->isInMergeRange() || $objPHPExcel->getActiveSheet()->getCellByColumnAndRow( $col, $row )->isMergeRangeValueCell()) {
// Cell is not merged cell
$data[$row][$col] = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow( $col, $row )->getCalculatedValue();

$referenceRow[$col]=$data[$row][$col];
//This will store the value of cell in $referenceRow so that if the next row is merged then it will use this value for the attribute
} else {
// Cell is part of a merge-range
$data[$row][$col]=$referenceRow[$col];
//The value stored for this column in $referenceRow in one of the previous iterations is the value of the merged cell
}

}
}

这将给出完全符合要求的结果

关于php - 使用 PHPExcel 读取包含合并单元格的 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960159/

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