13

I create in my php code a excel file with one tab and give it a name. The code what i use is this.:

// CREATE PHPSPREADSHEET OBJECT
require "../vendor/autoload.php";
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;

// CREATE A NEW SPREADSHEET + POPULATE DATA
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Batch');

But how do i create a second tab with another name?

[solved]

// CREATE A NEW SPREADSHEET + POPULATE DATA
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Batch');
// Add some data
$spreadsheet->createSheet();
// Add some data
$spreadsheet->setActiveSheetIndex(1) ->setCellValue('A1', 'world!');
// Rename worksheet
$spreadsheet->getActiveSheet()->setTitle('URL Removed');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$spreadsheet->setActiveSheetIndex(0);
Your Common Sense
  • 156,878
  • 40
  • 214
  • 345
Pascal
  • 427
  • 2
  • 6
  • 13

2 Answers2

23

You can add an extra tab like this:

$spreadsheet->createSheet();
// Zero based, so set the second tab as active sheet
$spreadsheet->setActiveSheetIndex(1);
$spreadsheet->getActiveSheet()->setTitle('Second tab');

If you like, you can read more here.

Bert H
  • 1,087
  • 1
  • 15
  • 29
0

You can also try this way

//at the beginning of the code
            use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;


            $myWorkSheet = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, 'Extra Tab');
            $spreadsheet->addSheet($myWorkSheet, 0);

            $sheetIndex = $spreadsheet->getIndex(
                $spreadsheet->getSheetByName('Extra Tab')
            );

            $spreadsheet->setActiveSheetIndex($sheetIndex);

For more information here

Juan Rincon
  • 13
  • 1
  • 4