2011-11-09 11 views
-2

私は、MsExcel(myFile.xls)ファイルを読み込んでそれをCSV(myFile.csv)ファイルに変換して出力するPHPスクリプトを探していました。誰かが私がこれをどうやってやることができるか、あるいはいくつかのコード例を知っていますか?PHPでXLSをCSVファイルに変換するにはどうすればよいですか?

+0

XLSは、右のMS Excelを、意味しますか? Windowsでは、Office Automation(基本的にはglorified VBスクリプト)を使ってそれを行うことができます。あなたはそれを考えましたか?あるいは、LibreOfficeのアプローチはより美味しいものでしょうか? – hardmath

答えて

2

このコードは.xlsファイルを読み取り、行ごとに.csvファイルに変換します。

しかし、私は同じことを行うには、任意の外部のライブラリや関数を探すことをお勧めします、それがより簡単になります -

/* Get the excel.php class here: http://www.phpclasses.org/browse/package/1919.html */ 
require_once("../classes/excel.php"); 
$inputFile=$argv[1]; 
$xlsFile=$argv[2]; 

if(empty($inputFile) || empty($xlsFile)) { 
    die("Usage: ". basename($argv[0]) . " in.csv out.xls\n"); 
} 

$fh = fopen($inputFile, "r"); 
if(!is_resource($fh)) { 
    die("Error opening $inputFile\n"); 
} 

/* Assuming that first line is column headings */ 
if(($columns = fgetcsv($fh, 1024, "\t")) == false) { 
    print("Error, couldn't get header row\n"); 
    exit(-2); 
} 
$numColumns = count($columns); 

/* Now read each of the rows, and construct a 
    big Array that holds the data to be Excel-ified: */ 
$xlsArray = array(); 
$xlsArray[] = $columns; 
while(($rows = fgetcsv($fh, 1024, "\t")) != FALSE) { 
    $rowArray = array(); 
    for($i=0; $i<$numColumns;$i++) { 
     $key = $columns[$i]; 
     $val = $rows[$i]; 
     $rowArray["$key"] = $val; 
    } 
    $xlsArray[] = $rowArray; 
    unset($rowArray); 
} 
fclose($fh); 

/* Now let the excel class work its magic. excel.php 
    has registered a stream wrapper for "xlsfile:/" 
    and that's what triggers its 'magic': */ 
$xlsFile = "xlsfile:/".$xlsFile; 
$fOut = fopen($xlsFile, "wb"); 
if(!is_resource($fOut)) { 
    die("Error opening $xlsFile\n"); 
} 
fwrite($fOut, serialize($xlsArray)); 
fclose($fOut); 

exit(0); 
+3

それを見て、そのスクリプトはCSVをXLSに変換します – Shane

+0

XLS to CSV – Shane

+0

@Shaneはまずクラスファイルをダウンロードします - http://www.phpclasses.org/browse/package/1919.html – SB24

関連する問題