在PHP中将EXCEL文件转换为CSV文件

时间:2015-08-20 07:49:30

标签: php csv import-from-excel

我想用PHP脚本将Excel文件(.xls)转换为CSV文件(.csv)? 我尝试了很多代码,但它不像这个一样! 没有错误出现,但它不会工作任何想法或任何其他代码行,我可以尝试?

<?php

echo("it works");
require_once '../batchs/Classes/PHPExcel/IOFactory.php';

$inputFileType = 'Excel5';
$inputFileName = '../public/aixstream/stock.xls';

$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcelReader = $objReader->load($inputFileName);

$loadedSheetNames = $objPHPExcelReader->getSheetNames();

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcelReader, 'CSV');

foreach($loadedSheetNames as $sheetIndex => $loadedSheetName) {
    $objWriter->setSheetIndex($sheetIndex);
    $objWriter->save($loadedSheetName.'.csv');
}
?>

谢谢

1 个答案:

答案 0 :(得分:1)

正如this答案中所述,您可以使用PHP-ExcelReader function来阅读xls文件。之后,您可以使用以下代码轻松将其转换为CSV(或任何其他格式),也可以使用here

阅读xls文件

//You will obviously need to import the function
//by downloading the file from the link above.

$reader=new Spreadsheet_Excel_Reader(); //Instantiate the function
$reader->setUTFEncoder('iconv'); // Set Encoder
$reader->setOutputEncoding('UTF-8'); // Set Output Encoding Type
$reader->read($filename); // Read the xls file

数据输出

/***
* Information about sheets is stored in boundsheets variable.
* This code displays each sheet's name.
***/
foreach ($reader->boundsheets as $k=>$sheet) //Run loop for all sheets in the file
 {
    echo "\n$k: $sheet"; 
 }

//Now just save the data in the array as csv

/***
* Data of the sheets is stored in sheets variable.
* For every sheet, a two dimensional array holding table is created.
* This code saves all data to CSV file.
***/
 foreach($reader->sheets as $k=>$data) // Run loop for all items.
 {
    echo "\n\n ".$reader->boundsheets[$k]."\n\n"; //Print Title

    foreach($data['cells'] as $row) // Loop for all items
    {
        foreach($row as $cell) // Loop for every cell
        {
            echo "$cell".","; //Add a comma after each value
        }
    }
 }

//It works! :D