web-dev-qa-db-ja.com

PHPExcelシートが存在するかどうかを確認

PhpExcelを使用していますが、シートが存在するかどうかを確認するためのものが見つかりません。私が達成したいのは次のようなものです:

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

そう。私の質問:シートが存在するかどうかを確認するにはどうすればよいですか?

編集

これはうまくいくでしょうか?

try{
    $sheet = $this->Excel->setActiveSheetIndex(1);
}catch(Exception $e){
    $Excel->createSheet(1);
    $sheet = $Excel->setActiveSheetIndex(1);
}
14
Get Off My Lawn

シートがインデックス1に存在するかどうかを知りたいだけなら、

$sheetCount = $Excel->getSheetCount();

ワークシートの数を返します。シートのインデックスは0から増加するため、インデックスが1のシートは、カウントが2以上の場合にのみ存在します。

名前付きシートが存在するかどうかを知りたい場合は、

$sheetNames = $Excel->getSheetNames();

シート名の配列(インデックス位置でインデックス付けされた)を返し、in_array();を使用してテストできます。

$Excel->getSheet()

(インデックスによって)要求されたシートが存在しない場合、メソッドは例外をスローします。そのため、try/catchブロックでラップすることも別のアプローチになります

$Excel->getSheetByName()

指定されたワークシートが存在しない場合、NULL値を返します

30
Mark Baker

sheetNameExists($ pSheetName) メソッドを使用して、シートが名前で存在するかどうかを確認できます。

3
Chris L

getSheet($sheetNumber)は、シートが存在するかどうかを確認する方法です。

1
mkaatman

はい、あなたのコードも機能します:

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

"現在のアクティブシート番号(インデックス)を知るには" $ this-> activeSheet-> getActiveSheetIndex()

注:$ loadExcel = PHPExcel_IOFactory :: load( "excelSheetName.xlsx"); $ this-> activeSheet = $ loadExcel;

0
pala dattadri
$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!
}
0
ashraf mohammed