Reputation: 3733
Excel file:
PHP code (excel to array):
function excel_to_array($excel_file) {
$filename = dirname(dirname(__FILE__)) .'/admin/user_files/' . $excel_file['name'];
$type = PHPExcel_IOFactory::identify($filename);
$objReader = PHPExcel_IOFactory::createReader($type);
$objPHPExcel = $objReader->load($filename);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheets[] = $worksheet->toArray();
}
var_dump($worksheets);
}
Result:
array (size=1)
0 =>
array (size=2)
0 =>
array (size=1)
0 => string '0894090592' (length=10)
1 =>
array (size=1)
0 => string '0894040404' (length=10)
There is too much nested arrays for such a simple excel, I'm lookig for something like this:
$worksheets = ['0894090592', '0894040404'];
Is there a way ?
P.S: I will NOT have multiple columns, but will have more rows, like these!
Upvotes: 0
Views: 91
Reputation: 23958
You can use array_column to get only the values in [0].
function excel_to_array($excel_file) {
$filename = dirname(dirname(__FILE__)) .'/admin/user_files/' . $excel_file['name'];
$type = PHPExcel_IOFactory::identify($filename);
$objReader = PHPExcel_IOFactory::createReader($type);
$objPHPExcel = $objReader->load($filename);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheets[] = $worksheet->toArray();
}
// Here we get only the values to a flat array
$worksheets = array_column($worksheets, 0);
var_dump($worksheets);
}
Upvotes: 1
Reputation: 5868
Extracting the data:
function excel_to_array($excel_file) {
$filename = dirname(dirname(__FILE__)) .'/admin/user_files/' . $excel_file['name'];
$type = PHPExcel_IOFactory::identify($filename);
$objReader = PHPExcel_IOFactory::createReader($type);
$objPHPExcel = $objReader->load($filename);
$worksheets = array();
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheetArray= $worksheet->toArray();
foreach($worksheetArray as $row) {
if(isset($row[0])) {
$worksheets[] = $row[0];
}
}
}
var_dump($worksheets);
}
Upvotes: 1