PHPExcel 将多张 xlsx 转换为 csv


PHPExcel converting multiple sheet of xlsx to csv

>im 使用这几行来转换 XLSX,其中包含 4 张要转换为 .csv 的工作表。 但它只转换 XLSX 文件的第一张。 如何转换XLSX中的每张图纸。 这是代码,

 error_reporting(E_ALL);
    date_default_timezone_set($this->vendor_timezone);
    /** PHPExcel_IOFactory */
    require_once sfConfig::get('sf_root_dir').'/lib/PHPExcel/IOFactory.php';
    $file=sfConfig::get("sf_upload_dir").DIRECTORY_SEPARATOR."temp".DIRECTORY_SEPARATOR."1344500254_MyExcel.xlsx"; 
    // Check prerequisites
    //print sfConfig::get("sf_upload_dir").DIRECTORY_SEPARATOR."temp".DIRECTORY_SEPARATOR; exit;
    if (!file_exists($file)) {
        exit($file."Please run 06largescale.php first.'n");
    }
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objPHPExcel = $objReader->load($file);
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
    $objWriter->save(str_replace('.xlsx', '.csv',$file));
    return "success";

请查看此处的教程,其中包含逐步实现此目的的代码

<?php
require_once 'PHPExcel/PHPExcel/IOFactory.php';
$excel = PHPExcel_IOFactory::load("test123.xlsx");
$writer = PHPExcel_IOFactory::createWriter($excel, 'CSV');
$writer->setDelimiter(";");
$writer->setEnclosure("");
$writer->save("test123.csv");
?>

要转换所有工作表,您必须遍历所有工作表并将其设置为活动工作表,然后将其写入文件。

$inFile = 'fileWithMultipleWorksheet.xlsx';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($inFile);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');    
$index = 0;
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $objPHPExcel->setActiveSheetIndex($index);
    // write out each worksheet to it's name with CSV extension
    $outFile = str_replace(array("-"," "), "_", $worksheet->getTitle()) .".csv";
    $objWriter->setSheetIndex($index);
    $objWriter->save($outFile);
    $index++;
}

将每个工作表依次写入不同的文件,然后将这些文件连接成一个:PHPExcel 不提供将多个工作表写入单个 CSV 文件的选项。