PHP读取.xls类型的Excel数据
上传Excel文件并导入表格中的数据是信息系统中比较常用的一个功能。发现一个开源项目PHPExcelReader可以解决这个这个问题,来记录一笔。
项目网址:http://sourceforge.net/projects/phpexcelreader/
但其中的代码需要做一些修改才能适用于中文环境,罗列如下:
1、修改文件引用路径;在reader.php中,修改
require_once 'Spreadsheet/Excel/Reader/OLERead.php';
为
require_once ( dirname(__FILE__) .'/OLERead.inc' );
2、修改输出字符集;在example.php和example2.php中,修改
$data->setOutputEncoding('CP1251');
为
$data->setOutputEncoding('GB2312');
3、修改测试文件名;在example.php中,修改
$data->read('jxlrwtest.xls');
为
$data->read('test.xls');
在example2.php中,修改
$file_to_include = "tjxlrwtestest.xls";
为
$file_to_include = "test.xls";
注:原来的测试文件jxlrwtest.xls是坏的,无法使用。test.xls为新的测试文件名,具体使用改为自己的文件即可。
4、修改编码函数;在example2.php中,修改
$table_output[$sheet] .= nl2br(htmlentities($data->sheets[$sheet]['cells'][$row][$col]));
为
$table_output[$sheet] .= nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row][$col]));
注:htmlentities会引起导致中文字符编码异常。该函数增加了字符集参数后亦无效,如有同学知道如何处理,请告知。
修改后的源码可点击 [download id="10" format="3"] 下载
phpExcelReader 报错: The filename uploadFile.xlsx is not readable???我的exl不是中文名称,该文件也有读写权限 不知道还会报这个错误
[回复]
晴枫 5月 15th, 2013 下午10:46 回复:
@mary, 检查.xls文件路径是否正确,特别是用相对路径的话;检查该文件是否被Excel打开无法被PHP读取;检查Apache是否有该文件的读取权限
[回复]
htmlentities函数加上中文字符参数就可以,htmlentities($data->sheets[$sheet][‘cells’][$row][$col],ENT_COMPAT ,GB2312)。
[回复]
晴枫 5月 15th, 2013 下午10:44 回复:
@lmj, 似乎最新的代码不用更新修改编码集也正常了。。。
[回复]