[英]Fetch range of columns with PhpSpreadsheet
我想要做的是從所有行而不是所有列中讀取數據。 我想獲取從列A到E的所有行的數據。 目前,我可以使用此代碼讀取整行(從 A到CL列)
// Read data from excel file
$reader = IOFactory::createReader($inputFileType);
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($inputFileName);
// Convert read data to array
$sheetData = $spreadsheet->getActiveSheet()->toArray(null,true,true,true);
// Put captured array to use
for ($row=1; $row <= count($sheetData) ; $row++) {
$xData = "'".implode("','",$sheetData[$row])."'";
}
print_r($xData);
exit;
有人可以指導我實現這一目標嗎? 我試過
// Specify columns to fetch data from
$cols = array('A','B','C','D','E','F','G','H','I','J','K');
// Put captured array to use
for ($row=1; $row <= count($sheetData) ; $row++) {
foreach ($cols as $col) {
$xData = "'".implode("','",$sheetData[$col.$row])."'";
}
}
print_r($xData);
exit;
但這沒有用。
使用實用程序助手,例如PhpOffice\\PhpSpreadsheet\\Cell\\Coordinate將列轉換為索引/字母。
$ws = $spreadsheet->getActiveSheet();
$firstColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString('A'); // A->1
$lastColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString('E'); // E->5
$firstRow = 1;
$lastRow = 4;
$data = [];
for($row = $firstRow; $row <= $lastRow; ++$row){
for($col = $firstColumnIndex; $col <= $lastColumnIndex; ++$col){
$data[$row][$col] = $ws->getCellByColumnAndRow($col, $row)->getValue();
}
}
print_r($data, true); // data are now collected in 2-dimensional array
還有其他方法,例如stringFromColumnIndex
、 coordinateFromString
、 indexesFromString
、 buildRange
、 rangeBoundaries
、 rangeDimension
、 getRangeBoundaries
等,它們可能會派上用場,但似乎沒有很好的記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.