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);
}
シートがインデックス1に存在するかどうかを知りたいだけなら、
$sheetCount = $Excel->getSheetCount();
ワークシートの数を返します。シートのインデックスは0から増加するため、インデックスが1のシートは、カウントが2以上の場合にのみ存在します。
名前付きシートが存在するかどうかを知りたい場合は、
$sheetNames = $Excel->getSheetNames();
シート名の配列(インデックス位置でインデックス付けされた)を返し、in_array();を使用してテストできます。
の
$Excel->getSheet()
(インデックスによって)要求されたシートが存在しない場合、メソッドは例外をスローします。そのため、try/catchブロックでラップすることも別のアプローチになります
$Excel->getSheetByName()
指定されたワークシートが存在しない場合、NULL値を返します
sheetNameExists($ pSheetName) メソッドを使用して、シートが名前で存在するかどうかを確認できます。
getSheet($sheetNumber)
は、シートが存在するかどうかを確認する方法です。
はい、あなたのコードも機能します:
try {
$objWorksheet = $objPHPExcel->setActiveSheetIndex(1);
}
catch (Exception $e) {
echo 'Sheet is not exists!';
}
"現在のアクティブシート番号(インデックス)を知るには" $ this-> activeSheet-> getActiveSheetIndex()
注:$ loadExcel = PHPExcel_IOFactory :: load( "excelSheetName.xlsx"); $ this-> activeSheet = $ loadExcel;
$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!
}