我的应用程序利用PHPExcel读取.xlsx
文件,无论我尝试什么,它似乎都不起作用。它在Windows中测试完美,但在Linux中不起作用。
php的扩展已启用,加载类的区分大小写没有问题,类肯定正在加载(使用`get_included_files检查)并且数据库连接函数都正常工作,我可以发出SQL命令并找回一张桌子。
这是使用PHPExcel的代码块:
if(isset($_FILES['file'])){
if(check_file($_FILES['file'])){
//set the excel version needed
$inputFileType = 'Excel2007';
//set variable with path of file, set the sheet name we want
$inputFileName = $_FILES['file']['tmp_name'];
$sheetname = 'KSAs';
echo $inputFileName . "</br>";
echo $sheetname . "</br>";
//create an object reader, pass in the file type, load the file
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setLoadSheetsOnly($sheetname);
//load the file into the reader object
$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');
}
echo $loadedSheetNames;
最后一个语句echo $ loadedSheetNames永远不会执行。我不确定问题可能是什么。
编辑:
关于用户Raptors的建议我开始做一些调试。在了解了如何正确使用var_dump
之后,我打印出错误。问题肯定在于创建$objReader
类,因为var_dump
读出来了:
object(PHPExcel_Reader_Excel2007)#1 (6) {
["_referenceHelper":"PHPExcel_Reader_Excel2007":private]=>
object(PHPExcel_ReferenceHelper)#3 (0) {
}
["_readDataOnly":protected]=>
bool(false)
["_includeCharts":protected]=>
bool(false)
["_loadSheetsOnly":protected]=>
NULL
["_readFilter":protected]=>
object(PHPExcel_Reader_DefaultReadFilter)#2 (0) {
}
["_fileHandle":protected]=>
NULL
}
$ objReader类打印出一个巨大的结果。我不太确定如何阅读数据,所以我想我必须弄明白。我没有太多的调试知识或经验,所以我不知道从哪里开始。