使用 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' 问题并删除冗余。看起来你的代码大致是这样的。
我正在创建一个包含不同 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' 问题并删除冗余。看起来你的代码大致是这样的。