tp3.2.excelデータ関数パッケージを読み込み、wpsでコンテンツが読み取れない場合や、excelでZ列より大きい場合(AA,AB列)、データが読み取れない場合の問題を解決する
2352 ワード
この関数はtp 3にある.2で直接使用できます.
public function readExcel($file)
{
header("Content-Type:text/html; charset=utf-8");
if ( !file_exists($file) ) {
$this->ajaxReturn([
'code' => 500,
'msg' => 'Excel '
]);
}
$info = pathinfo($file);
import('Vendor.Classes.PHPExcel');
if ( $info['extension'] == 'xls' ) {
import("Vendor.Classes.PHPExcel.Reader.Excel5");
$PHPReader = new \PHPExcel_Reader_Excel5();
} else if ( $info['extension'] == 'xlsx' ) {
import("Vendor.Classes.PHPExcel.Reader.Excel2007");
$PHPReader = new \PHPExcel_Reader_Excel2007();
} else {
$this->ajaxReturn([
'code' => 500,
'msg' => ' , xls,xlsx '
]);
}
// arr excel
$arr = array();
// excel
$PHPReader->setReadDataOnly(true); //
$PHPExcel = $PHPReader->load($file);
//$PHPExcel = $PHPReader->load($file); // wps , load
// , , 0 1,
$currentSheet = $PHPExcel->getSheet(0);
//
$allColumn = $currentSheet->getHighestColumn();
// excel Z (AA,AB ),
$allColumn = \PHPExcel_Cell::columnIndexFromString($allColumn);
//
$allRow = $currentSheet->getHighestRow();
// ,$currentRow , , 0
for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
// ,A 0
for ($currentColumn = 0; $currentColumn <= $allColumn; $currentColumn++) {
//
//$address = $currentColumn . $currentRow;
// , $arr
//$arr[$currentRow - 2][$currentColumn] = $currentSheet->getCell($address)->getValue();
// excel Z (AA,AB ),
$arr[$currentRow - 2][$currentColumn] = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
}
}
return $arr;
}