PhpSpreadSheet:如何将工作簿工作表保存在单个 CSV 文件中

我正在使用 PhpSpreadSheet,我需要将工作簿中包含的工作表保存为单独的 CSV 文件。


我尝试使用,$reader->setLoadAllSheets();但最后我总是有一个包含工作簿第一张纸的 CSV 文件。


这是我的代码示例:


    $excel = 'excelfile.xlsx';

    $name = 'newCsvName';


    //Read the file

    $reader = new Xlsx();

    $reader->setReadDataOnly(true);

    $reader->setLoadAllSheets();

    $spreadsheet = $reader->load($excel);


    //Write the CSV file

    $writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);

    $writer->setDelimiter(";");

    $csvPath = 'csv_files/' . $dir . '/' . $name .'.csv';

    $writer->save($csvPath);


泛舟湖上清波郎朗
浏览 243回答 1
1回答

潇潇雨雨

我就是这样解决的。我首先将包含在 excel 文件中的每个工作表加载,然后使用信息保存一个新的 CSV 文件。我相信应该有更好的方法,但它工作正常。$excel = 'excelfile.xlsx';$name = 'newCsvName';$reader = new Xlsx();$reader->setReadDataOnly(true);//Get all sheets in file$sheets = $reader->listWorksheetNames($excel);//Loop for each sheet and save an individual fileforeach($sheets as $sheet){   //Load the file   $spreadsheet = $reader->load($excel);   //Write the CSV file   $writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);   $writer->setDelimiter(";");   $csvPath = 'csv_files/' . $dir . '/' . $name.'_'.$sheet.'.csv';   $writer->save($csvPath);}
打开App,查看更多内容
随时随地看视频慕课网APP