14

我正在使用 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);
}
4

6 回答 6

33

如果您只是想知道索引 1 处是否存在工作表,那么

$sheetCount = $excel->getSheetCount();

将返回工作表的计数。由于工作表从 0 开始递增索引,因此只有当计数为 2 或更多时,索引 1 处的工作表才会存在。

如果您想知道是否存在命名工作表,那么

$sheetNames = $excel->getSheetNames();

将返回一个工作表名称数组(由它们的索引位置索引),然后您可以使用 in_array() 进行测试;

$excel->getSheet()

如果请求的工作表(按索引)不存在,方法将抛出异常,因此将其包装在 try/catch 块中将是另一种方法

$excel->getSheetByName()

如果命名的工作表不存在,则返回 NULL 值

于 2013-03-12T15:47:51.657 回答
3

您可以使用sheetNameExists($pSheetName)方法按名称检查工作表是否存在。

于 2013-03-12T15:48:36.287 回答
1

getSheet($sheetNumber)是您检查工作表是否存在的方式。

于 2013-03-12T15:45:22.010 回答
0

是的,您的代码也可以使用:

try {
        $objWorksheet =  $objPHPExcel->setActiveSheetIndex(1); 
}
catch (Exception $e) {
    echo 'Sheet is not exists!';
}
于 2014-12-23T20:27:20.203 回答
0
$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!
}
于 2019-06-26T08:38:16.570 回答
0

“要知道当前的活动表编号(索引)” $this->activeSheet->getActiveSheetIndex()

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

于 2020-03-09T05:46:34.560 回答