【发布时间】:2015-02-09 09:21:25
【问题描述】:
我正在尝试将 2010 xlsx 文件导入 CAKEPHP 中的 mysql db。 PHPExcel插件用于excel操作。
我面临以下问题。
问题 1:: 我的视图启动时看到以下错误
Notice (8): Undefined index: Program
[APP\Controller\ProgramsController.php, line 83]
问题 2:: 在从视图中浏览 xlsx 文件并单击提交按钮时,我看到以下错误。 无法打开 import.xlsx 进行阅读!文件不存在。
Error: An Internal Error Has Occurred. Stack Trace
APP\Vendor\PHPExcel\IOFactory.php line 268 → PHPExcel_Reader_Excel2007->canRead(string)
APP\Vendor\PHPExcel\IOFactory.php line 205 → PHPExcel_IOFactory::createReaderForFile(string)
APP\Controller\ProgramsController.php line 87 → PHPExcel_IOFactory::identify(string)
[internal function] → ProgramsController->importexcel()
CORE\Cake\Controller\Controller.php line 490 → ReflectionMethod->invokeArgs(ProgramsController, array)
CORE\Cake\Routing\Dispatcher.php line 191 → Controller->invokeAction(CakeRequest)
CORE\Cake\Routing\Dispatcher.php line 165 → Dispatcher->_invoke(ProgramsController, CakeRequest)
APP\webroot\index.php line 108 → Dispatcher->dispatch(CakeRequest, CakeResponse)
下面是我的控制器代码
<?php
App::import('Helper', 'Number');
include '../vendor/PHPExcel.php';
include '../vendor/PHPExcel/IOFactory.php';
class ProgramsController extends AppController {
var $name = 'Programs';
var $helpers = array('Html', 'Form', 'Time','PhpExcel','Js' => array('Jquery') );
var $uses = array('Program','Customer');
public $components = array('PhpExcel');
function importexcel()
{
$inputFileName = $this->data['Program']['uploadFile'];
if ($inputFileName!='')
{
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
for ($row = 2; $row <= $highestRow; ++$row)
{
$this->data['Program']['cycle_month']=$objWorksheet->getCellByColumnAndRow(1, $row)->getValue();
$this->data['Program']['cycle_year']=$objWorksheet->getCellByColumnAndRow(2, $row)->getValue();
$this->data['Program']['media_partnum']=$objWorksheet->getCellByColumnAndRow(3, $row)->getValue();
$resultarray[$row-2]=$this->data['Program'];
}
if ($this->Program->saveAll($resultarray)) {
$this->Session->setFlash(__('The Program have been saved', true));
}
}
}
}
?>
我的视图代码如下。
<?php
echo $this->Form->create('Program',array('id' =>'importexcel','type'=>'post','action'=>'importexcel','url' => array('controller' => 'programs')));
?>
<table>
<tbody>
<tr>
<td>Choose Your File:</td>
<td><input width=200 type="file" name="data[Program][uploadFile]"></td>
<td>
<div>
<?php echo $this->Form->submit('Import Program', array('div'=>false,'name'=>'importexcel'));
?>
</div>
</td>
</tr>
</tbody>
</table>
谁能帮忙解决这个问题,我搜索了使用 PHPExcel 将 Excel 上传到 mysql 数据库的在线教程,但也找不到任何有意义的内容。
如果您能解释修复步骤或任何其他方法,那将非常有帮助。
谢谢。
【问题讨论】:
-
“无法打开 import.xlsx 进行阅读!文件不存在。” very clear 错误消息有什么不清楚的地方?调试路径和文件权限。
-
我已授予输入文件的完全权限,但仍然出现相同的错误。我是编程新手,请详细说明
-
你可以关注这个stackoverflow.com/a/17190330/2460470,可能会对你有所帮助。
-
不知道为什么大多数人不使用PHPExcel将数据导入cakephp,它实际上可以用于从Excel中导入数据。
-
嗨朋友们,需要一些帮助来解决我的问题。