PHPEXCel Читать только один лист в массив

0

Я использую PHPExcel только для чтения значений из листов excel, если я использую этот код, он отлично работает без проблем:

  function ReadUploadedFile($Uploadedfile,$fileExtension)
    {
            class MyReadFilter implements PHPExcel_Reader_IReadFilter
            {
                public function readCell($column, $row, $worksheetName = '')
                 {
                    // Read rows 1 to 7 and columns A to E only
                    if ($row>=1 && $row<=100) {
                        if (in_array($column,range('A','Z'))) {
                            return true;
                        }
                    }
                    return false;
                }
            }
}

        $filterSubset = new MyReadFilter();
        $inputFileType="";

        $inputFileType = 'Excel5';
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objReader->setReadFilter($filterSubset);
        $objReader->setReadDataOnly(true);
        $objPHPExcel = $objReader->load('myExcelsheet.xls');
        $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);

$ sheetData теперь представляет собой массив, и я могу использовать его без проблем.

что, если у меня много листов, и мне нужно указать только один, согласно документации из PHPEXCEL, говорят, что они используют setLoadSheetsOnly()

Я пытаюсь ударить код, но он не работает.

$inputFileType = 'Excel2007';   
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadFilter($filterSubset);
$objReader->setReadDataOnly(true);
$objReader->setLoadSheetsOnly("Summary"); //my worksheet name is Summary
$objPHPExcel = $objReader->load('myExcelsheet.xlsx');

так что я должен написать после вышеприведенной строки, чтобы преобразовать этот объект в массив Я попробую это

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

но он дает эту ошибку

Вызов функции-члена cellExists() для не-объекта

и когда я пробую это

$sheetData = $objPHPExcel->toArray(null,true,true,true);

Вызов неопределенного метода PHPExcel :: toArray()

  • 0
    Почему вы используете Читатель Excel2007 для загрузки файла .xls ? Excel2007 предназначен для файлов формата OfficeOpenXML. Файл .xls должен быть файлом в формате BIFF. Либо пусть PHPExcel сам выберет правильных читателей, либо убедитесь, что вы выбрали правильного читателя для файла
  • 0
    извините @markBaker, я редактирую его
Показать ещё 5 комментариев
Теги:
phpexcel

2 ответа

3

/** Вот моя работа с кодом: */

ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br/>');

/** PHPExcel_IOFactory */
require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php';

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$inputFileType = 'Excel2007';
$inputFileName = 'file.xlsx';
$sheetname = 'mysheey'; // I DON'T WANT TO USE SHEET NAME HERE

$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setLoadSheetsOnly($sheetname);
$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
echo ' Highest Column ' . $getHighestColumn = $objPHPExcel->setActiveSheetIndex()->getHighestColumn(); // Get Highest Column
echo ' Get Highest Row ' . $getHighestRow = $objPHPExcel->setActiveSheetIndex()->getHighestRow(); // Get Highest Row

echo "<pre>";
print_r($sheetData);
echo "</pre>";
0

Работайте со мной.

Я использую: rangeToArray();

"phpoffice/phpspreadsheet": "^ 1.3"

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load('report.xlsx');
$worksheet = $spreadsheet->setActiveSheetIndex(0);
$highestRow = $worksheet->getHighestRow();
$highestCol = $worksheet->getHighestColumn();

print_r($worksheet->rangeToArray("A4:$highestCol$highestRow", null, true, false, false));

// If you want to format data e.g. 2450 to 2,450
// You could set rangeToArray parameter at 4 = true

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню