为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
泛舟湖上清波郎朗 2021-11-05 16:23:17
我正在使用 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);
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我就是这样解决的。我首先将包含在 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 file

foreach($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);

}


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 242 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信