How to set active sheet without loading an xlsx fi

2020-06-04 13:09发布

I am using PHPExcel to generate an xl using php. I am not loading an xl sheet but creating new sheets using

$phpExcel = new PHPExcel();
$phpExcel->getActiveSheet()->setTitle("My Sheet");

I want to set active sheet using phpExcel using $phpExcel->setActiveSheetIndexByName("2");

but im getting an error setActiveSheetIndexByName not defined function.

Please help

标签: php phpexcel
4条回答
The star\"
2楼-- · 2020-06-04 13:24

You shouldn't need ByName. Try just setActiveSheetIndex(2);.

查看更多
Rolldiameter
3楼-- · 2020-06-04 13:25

Add below function into Excel.php class file:

function setActiveSheet($sheetnumber) {
        $this->objPHPExcel->setActiveSheetIndex($sheetnumber);
    }

then call that function like this :

$phpExcel->setActiveSheet(0);
查看更多
Root(大扎)
4楼-- · 2020-06-04 13:35

If you are directly manipulating the xml in workbook.xml

$replace = '#activeTab="\d"#i';
$with = 'activeTab="0"';
$newxmlfile=preg_replace($replace,$with,$newxmlfile); // force activetab to sheet 1
查看更多
我欲成王,谁敢阻挡
5楼-- · 2020-06-04 13:41

You do, of course, need to create/add additional worksheets to be able to change the active sheet: using new PHPExcel() will only create a workbook containing a single sheet.

You can set the active sheet using either the sheet index (sheets are indexed from 0);

$objPHPExcel->setActiveSheetIndex(2);

or by name

$objPHPExcel->setActiveSheetIndexByName('My Second Sheet');

Adding a new sheet using either the createSheet() or addSheet() methods will automatically set that new worksheet to the active worksheet. By default, any new worksheet will be given a name comprising the word "Worksheet" and a number until you use setTitle() to change it.

查看更多
登录 后发表回答