使用 phpexcel 创建多个工作表时出现一个额外的工作表

An extra worksheet present when creating multiple sheets using phpexcel

我正在创建一个包含不同 sheet 的 excel 文件。不同的 sheet 是通过迭代创建的。但是我的迭代导致额​​外的 sheet 命名为 worksheet。我的代码是:

        $result = fetch results from database;
        $count = COUNT($result);
        foreach ( $result as $key=>$value){ 
            $objPHPExcel->createSheet($key);   
            $objPHPExcel->getActiveSheet()
                   ->setTitle($value['title']);  
        }

我的数据库有 3 个结果,它生成了三个作品 sheet 和第四个作品 'Worksheet'。

如果我使用

的检查条件
if ($key > 0) {
     execute above code
}
else {
     $objPHPExcel->setActiveSheetIndex(0)->setTitle($value['title']);
}

它工作正常。为什么会这样?哪里错了?

您的代码没有任何问题。当您使用 $objPHPExcel = new PHPExcel() 实例化一个新的 PHPExcel 对象时,它是用一个名为 "worksheet" 的 sheet 创建的;如果您只想创建自己的 sheets

,请删除它
$objPHPExcel->removeSheetByIndex(0);

一如既往地帮助我,但我想进一步扩展和解释它。

我发现 $objPHPExcel = new PHPExcel()$objPHPExcel->createSheet() 都创建了一个名为“worksheet”的 sheet。所以使用其中一个。

在创建多个 sheet 的以下示例中:

$objPHPExcel = new PHPExcel();
// First sheet
$objWorkSheet = $objPHPExcel->createSheet(); // NOT NEEDED
$objWorkSheet = $objPHPExcel->getActiveSheet();
// code for putting first sheet data

// Second sheet
$objWorkSheet = $objPHPExcel->createSheet();
// code for putting second sheet data

// Third, fourth sheets etc

createSheet() 不需要我评论的第一个 sheet,它将创建额外的空白 sheet。 new PHPExcel()已经按照他说的做了我的第一个。

因此,将 $objPHPExcel->removeSheetByIndex(0) 放在末尾以将其删除会起作用——但只需删除这一不需要的行即可解决 'right' 问题并删除冗余。看起来你的代码大致是这样的。