【问题标题】:Write to multisheet excel using phpspreadsheet in php在php中使用phpspreadsheet写入多表excel
【发布时间】:2019-07-15 00:23:47
【问题描述】:

我设法使用 phpspreadsheet 写入 excel 文件...但仅适用于单张纸。我尝试创建多页,但失败了。感谢您的帮助。 以下是我的代码..提前致谢。

public function exportAll()(
{
    $e = 2; // Row start at 2
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();

    $data1 = $this->model_general->get_data1();
    $sheet->setActiveSheetIndex(0);

    //Excel Heading
    $sheet->setCellValue('A1', 'Date');
    $sheet->setCellValue('B1', 'Details');
    // ... set heading ...

    // Excel Data
    if(!empty($data1)):
    foreach ($data1 as row)
    {
        $sheet->setCellValue('A'.$e, $row->date);
        $sheet->setCellValue('B'.$e, $row->details);
        // ... set data ...
        $e++;
    }
    endif;

    // Assign Excel Name
    $sheet->setTitle('Data1');

    $sheet->createSheet();

    $data2 = $this->model_general->get_data2();
    $sheet->setActiveSheetIndex(1);

    //Excel Heading
    $sheet->setCellValue('A1', 'Date');
    $sheet->setCellValue('B1', 'Details');
    // ... set heading ...

    // Excel Data
    if(!empty($data2)):
    foreach ($data2 as row)
    {
        $sheet->setCellValue('A'.$e, $row->date);
        $sheet->setCellValue('B'.$e, $row->details);
        // ... set data ...
        $e++;
    }
    endif;

    // Assign Excel Name
    $sheet->setTitle('Data2');

    $sheet->createSheet();

    $data3 = $this->model_general->get_data3();
    $sheet->setActiveSheetIndex(2);

    //Excel Heading
    $sheet->setCellValue('A1', 'Date');
    $sheet->setCellValue('B1', 'Details');
    // ... set heading ...

    // Excel Data
    if(!empty($data3)):
    foreach ($data3 as row)
    {
        $sheet->setCellValue('A'.$e, $row->date);
        $sheet->setCellValue('B'.$e, $row->details);
        // ... set data ...
        $e++;
    }
    endif;

    // Assign Excel Name
    $sheet->setTitle('Data3');

    // Set first sheet as active sheet
    $sheet->setActiveSheetIndex(0);

    $writer = new Xlsx($spreadsheet);
    $filename = 'All Data';
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'. $filename .'.xlsx"');
    header('Cache-Control: max-age=0');
    $writer->save('php://output'); // download file

}

现在.. 此代码在 $sheet->setActiveSheetIndex(0); 处给出错误;

Call to undefined method PhpOffice\PhpSpreadsheet\Worksheet\Worksheet::setActiveSheetIndex()

让我知道哪里出了问题..我似乎找不到它-,-

【问题讨论】:

    标签: excel phpspreadsheet


    【解决方案1】:
    $worksheet1 = $spreadsheet->createSheet();
    $worksheet1->setTitle('Another sheet');
    

    https://phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#creating-worksheets-in-a-workbook

    【讨论】:

    • 这就是我所做的......我创建了新工作表,然后为其设置值.. 然后设置标题.. 下一张工作表.​​. 我也这样做.. 但它仍然没有不工作..
    【解决方案2】:

    此代码能够创建多个工作表、添加内容并保存该文件。试试这个。

    <?php
    require 'vendor/autoload.php';
    use PhpOffice\PhpSpreadsheet\Spreadsheet; 
    use PhpOffice\PhpSpreadsheet\Writer\Xls; 
    
    $spreadsheet = new Spreadsheet(); 
    
    $sheet = $spreadsheet->getActiveSheet();  
    $sheet->setCellValue('A1', 'Sheet1');  
    
    $sheet_2=$spreadsheet->createSheet();
    $sheet_2->setCellValue('B1', 'Sheet2'); 
    
    $sheet_3=$spreadsheet->createSheet();
    $sheet_3->setCellValue('B5', 'Sheet3'); 
    
    $writer = new Xls($spreadsheet);  
    
    $writer->save('gfg1.xls'); 
    ?>
    

    在您的代码中,您启动 Spreadsheet() 并从 $spreadsheet 创建表 1。这是正确的。

     $spreadsheet = new Spreadsheet();
     $sheet = $spreadsheet->getActiveSheet();
    

    要创建下一张表,您需要再次使用 $spreadsheet,

     $nextsheet=$spreadsheet->createSheet();
    

    但你使用

     $sheet->createSheet();
    

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 2019-07-23
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 2010-09-19
      相关资源
      最近更新 更多