Подтвердить что ты не робот

PHPExcel Проверьте, существует ли листинг

Я использую phpExcel, и я не могу найти что-либо, чтобы проверить, существует ли лист. Я бы хотел сделать следующее:

if(!$excel->sheetExists(1)){
    $excel->createSheet(1);
    $sheet = $excel->setSheet(1);
}
// Do some stuff with the sheet

Итак. Мой вопрос: как проверить, существует ли лист?

Edit

Будет ли это работать?

try{
    $sheet = $this->excel->setActiveSheetIndex(1);
}catch(Exception $e){
    $excel->createSheet(1);
    $sheet = $excel->setActiveSheetIndex(1);
}
4b9b3361

Ответ 1

Если вы просто хотите узнать, есть ли лист в индексе 1, то

$sheetCount = $excel->getSheetCount();

вернет счет рабочих листов. Поскольку индексы индексируются индексом от 0, тогда лист с индексом 1 будет существовать только в том случае, если счетчик равен 2 или более.

Если вы хотите узнать, существует ли именованный лист, то

$sheetNames = $excel->getSheetNames();

возвращает массив имен листов (индексируется по их позиции индекса), и затем вы можете проверить с помощью in_array();

$excel->getSheet()

метод будет генерировать исключение, если запрошенный лист (по индексу) не существует, поэтому перенос его в блок try/catch будет другим подходом

$excel->getSheetByName()

возвращает значение NULL, если именованный лист не существует

Ответ 2

Вы можете проверить, существует ли лист по имени с помощью метода sheetNameExists ($ pSheetName).

Ответ 3

getSheet($sheetNumber) заключается в том, как вы проверяете наличие листа.

Ответ 4

Да, ваш код также будет работать:

try {
        $objWorksheet =  $objPHPExcel->setActiveSheetIndex(1); 
}
catch (Exception $e) {
    echo 'Sheet is not exists!';
}

Ответ 5

$sheet=$excel->getSheet(1);
// or you can get sheet by name $sheet=$excel->getSheetByName("Sheet1");
if(!empty($sheet)&&is_object($sheet)){
      //sheet already exist
}else{
      //sheet does not exist. Write your code here!
}