PHPExcel将多张xlsx转换为csv

时间:2012-08-10 03:49:59

标签: php phpexcel

我使用这几行来转换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";

3 个答案:

答案 0 :(得分:5)

请在此处查看具有分步代码的教程以实现此目的

<?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");
?>

答案 1 :(得分:3)

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

$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++;
}

答案 2 :(得分:1)

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

相关问题