codeigniter phpexcel 错误 ZipArchive::getFromName(): 无效或未初始化的 Zip 对象
codeigniter phpexcel error ZipArchive::getFromName(): Invalid or uninitialized Zip object
我正在尝试使用 codeigniter 和 phpexcel 从 excel 文件 (.xlsx) 将数据导入 oracle,这是我的控制器:
private $filename;
public function form(){
$data = array();
if(isset($_POST['preview'])){
$upload = $this->RoadmapModel->upload_file($this->filename);
$upload_data = $this->upload->data();
$this->filename = $upload_data['file_name'];
if($upload['result'] == "success"){
include APPPATH.'third_party/PHPExcel/PHPExcel.php';
$excelreader = new PHPExcel_Reader_Excel2007();
$loadexcel = $excelreader->load('excel/'.$this->filename);
$sheet = $loadexcel->getActiveSheet()->toArray(null, true, true ,true);
$data['sheet'] = $sheet;
}else{ // Jika proses upload gagal
$data['upload_error'] = $upload['error'];
}
}
$this->load->view('form', $data);
}
public function import(){
include APPPATH.'third_party/PHPExcel/PHPExcel.php';
$excelreader = new PHPExcel_Reader_Excel2007();
$loadexcel = $excelreader->load('excel/'.$this->filename = $this -> form());
$sheet = $loadexcel->getActiveSheet()->toArray(null, true, true ,true);
$data = [];
$numrow = 1;
foreach($sheet as $row){
if($numrow > 1){
// Kita push (add) array data ke variabel data
array_push($data, [
'TAHUN'=>$row['A'],
'PROVINCEID'=>$row['B'],
'PROVINSI'=>$row['C'],
'PLAN_DESAB'=>$row['D'],
'ACTUAL_DESAB'=>$row['E'],
'PLAN_ELEKTRIFIKASI'=>$row['F'],
'ACTUAL_ELEKTRIFIKASI'=>$row['G'],
'PLAN_LISDES'=>$row['H'],
'ACTUAL_LISDES'=>$row['I'],
]);
}
$numrow++;
}
$this->RoadmapModel->insert_multiple($data);
redirect("Roadmap");
}
这是我的模型:
public $tablename = "X";
function upload_file($filename){
$this->load->library('upload');
$config['upload_path'] = './excel/';
$config['allowed_types'] = 'xlsx';
$config['max_size'] = '2048';
$config['overwrite'] = true;
$config['file_name'] = $filename;
$this->upload->initialize($config);
if($this->upload->do_upload('file')){
$return = array('result' => 'success', 'file' => $upload_data = $this->upload->data(), 'error' => '');
return $return;
}else{
$return = array('result' => 'failed', 'file' => '', 'error' => $this->upload->display_errors());
return $return;
}
}
function insert_multiple($data){
$p_tablename= $this->tablename;
$this->db->insert_batch($p_tablename, $data);
}
当我使用导入功能时,这是错误消息:
Message: ZipArchive::getFromName(): Invalid or uninitialized Zip object
Filename: Reader/Excel2007.php
Line Number: 327
Backtrace :
File: C:\xampp\htdocs\web_excel_ci\application\controllers\Roadmap.php
Line: 82
Function: load
行 : 82 在函数 import()
中是 $loadexcel = $excelreader->load('excel/'.$this->filename = $this -> form());
那是为了加载要导入的 excel 文件,我尝试使用 $this->filename = $this->form()
从函数 form() 获取文件名,但这是一个错误
请帮忙解决问题,因为我堆在那里
非常感谢...
线路肯定有问题
$loadexcel = $excelreader->load('excel/'.$this->filename = $this->form());
它似乎试图用 $this->form()
中的 return 设置 $this->filename
。但是 $this->form()
没有 return 值 - 它加载视图。
因此,传递给 $excelreader->load()
的参数可能只是字符串 "excel/"。这肯定不是有效的 zip 对象。
此序列应为 excelreader->load()
生成正确的字符串。
$this->form();
$loadexcel = $excelreader->load('excel/'.$this->filename);
但是您必须接受视图也会被加载。
在这个堆栈溢出中搜索了许多小时后,我找到了解决这个问题的解决方案,
我使用 $this->session->set_flashdata('fileName',$fileName);
在一个函数中获取值
并使用 $fileName = $this->session->flashdata('fileName');
将该值放入另一个函数
成功了。
感谢大家的关注...
默认情况下,PHPWord 使用 Zip 扩展名来处理 ZIP 压缩档案和其中的文件。如果您无法在您的服务器上安装 Zip 扩展,您可以使用纯 PHP 库替代 PclZip,它包含在 PHPWord.
中
\PhpOffice\PhpWord\Settings::setZipClass(\PhpOffice\PhpWord\Settings::PCLZIP);
这对我有用。
我正在尝试使用 codeigniter 和 phpexcel 从 excel 文件 (.xlsx) 将数据导入 oracle,这是我的控制器:
private $filename;
public function form(){
$data = array();
if(isset($_POST['preview'])){
$upload = $this->RoadmapModel->upload_file($this->filename);
$upload_data = $this->upload->data();
$this->filename = $upload_data['file_name'];
if($upload['result'] == "success"){
include APPPATH.'third_party/PHPExcel/PHPExcel.php';
$excelreader = new PHPExcel_Reader_Excel2007();
$loadexcel = $excelreader->load('excel/'.$this->filename);
$sheet = $loadexcel->getActiveSheet()->toArray(null, true, true ,true);
$data['sheet'] = $sheet;
}else{ // Jika proses upload gagal
$data['upload_error'] = $upload['error'];
}
}
$this->load->view('form', $data);
}
public function import(){
include APPPATH.'third_party/PHPExcel/PHPExcel.php';
$excelreader = new PHPExcel_Reader_Excel2007();
$loadexcel = $excelreader->load('excel/'.$this->filename = $this -> form());
$sheet = $loadexcel->getActiveSheet()->toArray(null, true, true ,true);
$data = [];
$numrow = 1;
foreach($sheet as $row){
if($numrow > 1){
// Kita push (add) array data ke variabel data
array_push($data, [
'TAHUN'=>$row['A'],
'PROVINCEID'=>$row['B'],
'PROVINSI'=>$row['C'],
'PLAN_DESAB'=>$row['D'],
'ACTUAL_DESAB'=>$row['E'],
'PLAN_ELEKTRIFIKASI'=>$row['F'],
'ACTUAL_ELEKTRIFIKASI'=>$row['G'],
'PLAN_LISDES'=>$row['H'],
'ACTUAL_LISDES'=>$row['I'],
]);
}
$numrow++;
}
$this->RoadmapModel->insert_multiple($data);
redirect("Roadmap");
}
这是我的模型:
public $tablename = "X";
function upload_file($filename){
$this->load->library('upload');
$config['upload_path'] = './excel/';
$config['allowed_types'] = 'xlsx';
$config['max_size'] = '2048';
$config['overwrite'] = true;
$config['file_name'] = $filename;
$this->upload->initialize($config);
if($this->upload->do_upload('file')){
$return = array('result' => 'success', 'file' => $upload_data = $this->upload->data(), 'error' => '');
return $return;
}else{
$return = array('result' => 'failed', 'file' => '', 'error' => $this->upload->display_errors());
return $return;
}
}
function insert_multiple($data){
$p_tablename= $this->tablename;
$this->db->insert_batch($p_tablename, $data);
}
当我使用导入功能时,这是错误消息:
Message: ZipArchive::getFromName(): Invalid or uninitialized Zip object
Filename: Reader/Excel2007.php
Line Number: 327
Backtrace :
File: C:\xampp\htdocs\web_excel_ci\application\controllers\Roadmap.php
Line: 82
Function: load
行 : 82 在函数 import()
中是$loadexcel = $excelreader->load('excel/'.$this->filename = $this -> form());
那是为了加载要导入的 excel 文件,我尝试使用 $this->filename = $this->form()
从函数 form() 获取文件名,但这是一个错误
请帮忙解决问题,因为我堆在那里
非常感谢...
线路肯定有问题
$loadexcel = $excelreader->load('excel/'.$this->filename = $this->form());
它似乎试图用 $this->form()
中的 return 设置 $this->filename
。但是 $this->form()
没有 return 值 - 它加载视图。
因此,传递给 $excelreader->load()
的参数可能只是字符串 "excel/"。这肯定不是有效的 zip 对象。
此序列应为 excelreader->load()
生成正确的字符串。
$this->form();
$loadexcel = $excelreader->load('excel/'.$this->filename);
但是您必须接受视图也会被加载。
在这个堆栈溢出中搜索了许多小时后,我找到了解决这个问题的解决方案,
我使用 $this->session->set_flashdata('fileName',$fileName);
在一个函数中获取值
并使用 $fileName = $this->session->flashdata('fileName');
将该值放入另一个函数
成功了。
感谢大家的关注...
默认情况下,PHPWord 使用 Zip 扩展名来处理 ZIP 压缩档案和其中的文件。如果您无法在您的服务器上安装 Zip 扩展,您可以使用纯 PHP 库替代 PclZip,它包含在 PHPWord.
中\PhpOffice\PhpWord\Settings::setZipClass(\PhpOffice\PhpWord\Settings::PCLZIP);
这对我有用。