首页 > 解决方案 > PHP - PHPExcel Range to Array 忽略空列

问题描述

我在 Excel 工作表下方,我想将范围A1:D4放入 PHP 数组中。

在此处输入图像描述

为此,我使用PHPExcel如下。我有一个简单的Excel课程:

Excel.php

public function __construct($file)
{
     if ($file instanceof \SplFileInfo) {
         $filename = $file->getRealPath();
     } else {
         $filename = $file;
     }

     $this->objPHPExcel = \PhpOffice\PhpSpreadsheet\IOFactory::load($filename);
     $this->objPHPExcel->setActiveSheetIndex(0);
}

然后我有一个简单的函数来获取范围,使用rangeToArray()函数:

public function getRange($range)
{
    $spreadsheet = $this->objPHPExcel;
    return $spreadsheet->rangeToArray($range,'  ', true, true, true);

}

$excel = new ExcelManipulator(storage_path() . '/app/temp_files/myfile.xlsx');
$array = $excel->getRange($range);

return response()->json(['result' => $array], 200);

现在的问题是上述函数“切换”了列。见下面的输出:

[
  '1': [
     "A": "  ", 
     "B": "  ",
     "C": "  ",
     "D": "  "
  ],
  '2': [
     "A": "Company", 
     "B": "Acme Inc",
     "C": "  ",
     "D": "  "
  ],
  '3': [
     "A": "Address", 
     "B": "New York",
     "C": "  ",
     "D": "  "
  ],
  '4': [
     "A": "  ", 
     "B": "  ",
     "C": "  ",
     "D": "  "
  ]
]

正如您在数组中看到的那样,公司地址文本已经从行2和开始,而它们应该从3Column AColumn B

标签: phplaravelphpexcelphpspreadsheet

解决方案


你可以试试看

function getRange($range, $inputFileName)
{
    $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFilename);
    return $spreadsheet->getActiveSheet()->rangeToArray($range," ", true, true, true);

}
$inputFilename = storage_path() . '/app/temp_files/myfile.xlsx';
$array = getRange($range, $inputFilename);

推荐阅读