最近遇上一个不小的问题,我要读取XLS(Microsoft Excel文件)到PHP。在我花了近两个小时在网上搜索以后,我发现了一个开源的“PHP-ExcelReader class”很不错。它有所有我需要的东西(多表支持,可读取EXCEL 2000和2007的数据),另一方面,Magento不支持XLS。我决定些一个小的方法,这样你就可以在任何Magento的类里执行了。

那么,下面就是代码了:

public function loadXML($path_to_XML)
{
$include_path = dirname(__FILE__);
$path_to_PHP_ExcelReader = $include_path."/read_xls/Excel/reader.php";
 
require_once $path_to_PHP_ExcelReader;
 
// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
 
// Set output Encoding.
$data->setOutputEncoding('utf-8');
/* if you want you can change 'iconv' to mb_convert_encoding:*/
 
$data->setUTFEncoder('mb');
 
/*
* By default rows & cols indeces start with 1
* For change initial index use:
*/
$index = 0;
 
$data->setRowColOffset($index);
/* setDefaultFormat - set format for columns with unknown formatting*/
 
$data->setDefaultFormat('%.2f');
 
/* setColumnFormat - set format for column (apply only to number fields)*/
$data->setColumnFormat(4, '%.3f');
/*Do the actual reading of file*/
 
$data->read($path_to_XML);
return $data;
}

下面是你的Excel文件数据化为PHP数组后可以调用的方法:

$data->sheets[0]['numRows']
//count rows
 
$data->sheets[0]['numCols']
//count columns
 
$data->sheets[0]['cells'][$i][$j]
//data from $i-row $j-column
 
$data->sheets[0]['cellsInfo'][$i][$j]
//extended info about cell
 
$data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"
//if 'type' == "unknown" - use 'raw' value, because  cell contain value with format '0.00';
$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = value
//if cell without format
 
$data->sheets[0]['cellsInfo'][$i][$j]['colspan']
//gets colspan value
 
$data->sheets[0]['cellsInfo'][$i][$j]['rowspan']
//gets rowspan value

360magento提供专业的基于magento系统的电商网站开发服务,如有需求或相关咨询,请与我们联系