codeigniter 如何只写xlsx文件的活动表PHPSpreadsheet

tvokkenx  于 2022-12-06  发布在  PHP
关注(0)|答案(2)|浏览(87)

我想把xlsx文件显示为html,但它总是返回文件的第一个工作表。我想让编写器只在有多个工作表时显示一个活动工作表(工作表的名称和顺序是随机的)。下面是我的代码:

public function view_excel($path){
        $file = realpath(FCPATH)."/uploads/PKB/".$path;
        $reader = IOFactory::createReader('Xlsx');
        $spreadsheet = $reader->load($file);
        // $spreadsheet = $spreadsheet->getActiveSheet();
        $writer = IOFactory::createWriter($spreadsheet, 'Html');
        $message = $writer->save('php://output');
    }

有什么办法吗?谢谢

fzwojiic

fzwojiic1#

我设法做到了这一点:

public function view_excel($path){
        $file = realpath(FCPATH)."/uploads/PKB/".$path;
        $reader = IOFactory::createReader('Xlsx');
        $spreadsheet = $reader->load($file);
        $active_sheet = $spreadsheet->getActiveSheet()->getTitle();
        $reader->setLoadSheetsOnly($active_sheet); //only load active sheet
        $worksheet = $reader->load($file);
        $writer = IOFactory::createWriter($worksheet, 'Html');
        $message = $writer->save('php://output');
    }

我不得不加载文件两次

mwngjboj

mwngjboj2#

给你!

public function view_excel($path){
    $file = realpath(FCPATH)."/uploads/PKB/".$path;
    $reader = IOFactory::createReader('Xlsx');
    $spreadsheet = $reader->load($file);
    $writer = IOFactory::createWriter($spreadsheet, 'Html');

 -> $writer->setSheetIndex($spreadsheet->getActiveSheetIndex());

    $message = $writer->save('php://output');
}

相关问题