【发布时间】:2014-12-24 16:21:51
【问题描述】:
我正在尝试在 phpexcel 中提取一些工作表,如下所示(请参阅https://stackoverflow.com/a/10587576/813801 以供参考)。
$newObjPHPExcel = new PHPExcel();
$newObjPHPExcel->removeSheetByIndex(0); //remove first default sheet
foreach ($sheets as $sheetIndex) {
echo "trying-$sheetIndex\n";
$workSheet = $objPHPExcel->getSheet($sheetIndex);
echo "done-$sheetIndex\n";
$newObjPHPExcel->addExternalSheet($workSheet);
}
(工作表是工作表范围内的索引数组。我使用 listWorksheetInfo 进行了检查)
如果我注释掉最后一行 $newObjPHPExcel->addExternalSheet($workSheet);
getSheet 方法工作正常。否则,我会收到一个错误:
致命错误:未捕获的异常“PHPExcel_Exception”带有消息“您请求的工作表索引:2 超出范围。实际张数为 1。在 /Xls/PHPExcel/PHPExcel.php:577
为什么 newObjPHPExcel 会干扰 objPHPExcel?
更新: 我找到了一个似乎可行的解决方法。不知道为什么其他版本不起作用。
$newObjPHPExcel = new PHPExcel();
$newObjPHPExcel->removeSheetByIndex(0); //remove first default sheet
foreach ($sheets as $sheetIndex) {
echo "trying-$sheetIndex\n";
$workSheet[] = $objPHPExcel->getSheet($sheetIndex);
echo "done-$sheetIndex\n";
}
foreach ($workSheet as $obj)
$newObjPHPExcel->addExternalSheet($obj);
【问题讨论】:
标签: phpexcel