我正在使用 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);
}
- 1 回答
- 0 关注
- 242 浏览
添加回答
举报
0/150
提交
取消