1

この数行を使用してxlsxを変換します。xlsxには、.csvに変換するための4枚のシートが含まれています。ただし、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";
4

3 に答える 3

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");
?>
于 2013-08-11T14:29:34.453 に答える
4

すべてのシートを変換するには、すべてのワークシートを繰り返し処理し、それをアクティブシートとして設定してから、ファイルに書き込む必要があります。

$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++;
}
于 2015-06-17T02:00:22.927 に答える
1

各シートを順番に別のファイルに書き込み、それらのファイルを1つに連結します。PHPExcelには、単一のCSVファイルに複数のシートを書き込むオプションはありません。

于 2012-08-10T06:28:02.537 に答える