紧急求助!Codeigniter无法调用PHPExcel
我是初学Codeigniter,使用其文件上传类将csv或者excel文件上传,同时,使用过PHPExcel来读取内容,装入数据库。我的程序如下:
controllers/products.php文件:
$memsn = $this->session->userdata('MEMSN');
$this->load->library('Excel_Read_Operat');
$groups = array('purchaser', 'salesman', 'viewer','merchant');
if ($this->ion_auth->in_group($groups))
{
$this->session->set_flashdata('message', $this->lang->line("access_denied"));
$data['message'] = (validation_errors() ? validation_errors() : $this->session->flashdata('message'));
redirect('module=products', 'refresh');
}
$this->form_validation->set_rules('userfile', $this->lang->line("upload_file"), 'xss_clean');
if ($this->form_validation->run() == true)
{
if ( isset($_FILES["userfile"])){
$this->load->library('upload_photo');
$dest_dir = 'uploads/'.$memsn.'/';
$this->dest_dir_fortest = $dest_dir;
if($this->upload_photo->direct_is_exists($dest_dir)){
}else{
redirect("module=products&view=upload_csv", 'refresh');
}
$config['upload_path'] = $dest_dir;
$config['allowed_types'] = 'csv|xls|xlsx';
$config['max_size'] = '2048';
$config['overwrite'] = TRUE;
$old_file_name = $_FILES["userfile"]["name"];
$new_file_name = $this->getSystemTime().$_FILES["userfile"]["name"];
$config['file_name'] = $new_file_name;
//Initialize
$this->upload_photo->initialize($config);
if( ! $this->upload_photo->do_upload()){
//echo the errors
$error = $this->upload_photo->display_errors();
$this->session->set_flashdata('message', $error.$dest_dir);
redirect("module=products&view=upload_csv", 'refresh');
}
if ($this->upload_photo->file_ext == '.csv') {
$csv = $this->upload_photo->file_name;
Excel_Read_Operat::initialized($dest_dir.$new_file_name);
$phpexcel_csv_arr_table = Excel_Read_Operat::GetArrTable_CVS();
if(!empty($phpexcel_csv_arr_table)){
$keys = array('code','name','category_id','STATUS','DESCRIPTION','DECDESCTION','CUSTPRICE','LENGTH','HEIGHT','WIDTH','STATUS');
$final = array();
foreach ($phpexcel_csv_arr_table as $row_csv_value){
$final[] = array_combine($keys, $value);
foreach($final as $csv_pr) {
if($this->products_model->getProductByCode($csv_pr['code'])) {
$this->session->set_flashdata('message', $this->lang->line("check_product_code")." (".$csv_pr['code']."). ".$this->lang->line("code_already_exist"));
redirect("module=products&view=upload_csv", 'refresh');
}
}
}
在libraries/下,有Excel_Read_Operat.php类文件,和Excel文件夹,文件夹下是PHPExcel.php和PHPExcel文件夹。Excel_Read_Operat.php类如下:
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Excel_Read_Operat {
public $_filepath;
private $_arrayTable;
private $_Feature;
public static Function initialized($filepath){
if (file_exists($filePath)) {
$this->_filepath = $filepath;
}else{
return array();
}
}
public static Function GetData($val) {
$jd = GregorianToJD ( 1, 1, 1970 );
$gregorian = JDToGregorian ( $jd + intval ( $val ) - 25569 );
return $gregorian;
}
public static Function GetArrTable_CVS(){
require_once 'EXCEL/PHPExcel.php';
require_once 'EXCEL/PHPExcel/IOFactory.php';
$PHPReader_CSV = new PHPExcel_Reader_CSV();
$file_ext=strtolower(pathinfo($this->_filepath, PATHINFO_EXTENSION));
$PHPReader_CSV->setInputEncoding('GBK');
$PHPReader_CSV->setDelimiter(',');
if(!$PHPReader_CSV->canRead($this->_filepath)){
return array();
}
$PHPExcel = $PHPReader_CSV->load($this->_filepath);
$currentSheet = $PHPExcel->getSheet ( 0 );
$allColumn = $currentSheet->getHighestColumn ();
$allColumn = PHPExcel_Cell::columnIndexFromString ( $allColumn );
$allRow = $currentSheet->getHighestRow ();
echo 'row is : '.$allRow.'
';
echo 'allColumn is : '.$allColumn.'
';
for($currentRow = 2; $currentRow
for($currentColumn = 0; $currentColumn $val = $currentSheet->getCellByColumnAndRow ( $currentColumn , $currentRow )->getValue ();
$this->_Feature[$currentColumn] = $val;
}
$this->_arrayTable [$currentRow] = $this->_Feature;
}
echo "\n";
return $this->_arrayTable;
}
public static Function GetArrTable_Excel() {
require_once 'EXCEL/PHPExcel.php';
require_once 'EXCEL/PHPExcel/IOFactory.php';
$PHPReader = new PHPExcel_Reader_Excel2007 ();
if (! $PHPReader->canRead ( $this->_filepath )) {
$PHPReader = new PHPExcel_Reader_Excel5 ();
if (! $PHPReader->canRead ( $this->_filepath )) {
echo 'no Excel';
return;
}
}
$PHPExcel = $PHPReader->load ( $this->_filepath );
$currentSheet = $PHPExcel->getSheet ( 0 );
$allColumn = $currentSheet->getHighestColumn ();
$allColumn = PHPExcel_Cell::columnIndexFromString ( $allColumn );
$allRow = $currentSheet->getHighestRow ();
echo 'row is : '.$allRow.'
';
echo 'allColumn is : '.$allColumn.'
';
for($currentRow = 2; $currentRow
for($currentColumn = 0; $currentColumn $val = $currentSheet->getCellByColumnAndRow ( $currentColumn , $currentRow )->getValue ();
$this->_Feature[$currentColumn] = $val;
}
$this->_arrayTable [$currentRow] = $this->_Feature;
}
echo "\n";
return $this->_arrayTable;
}
}
?>
我要调用GetArrTable_CVS这个方法,将表格中的数据读出来,然后放到数组表中返回,为什么我这里不能用require_once啊?我该怎么来调用PHPExcel呢?请指教了。谢谢
回复讨论(解决方案)
require_once 'EXCEL/PHPExcel.php';
require_once 'EXCEL/PHPExcel/IOFactory.php';
应放在程序文件的开始处
并确认路径是正确的
放在文件开始的地方,整个程序都无法运行了。我发现这两句放哪里哪里不能运行,太奇怪了。
路径应该是对的,就在同一个目录下,麻烦您给看看
给出错误信息!
麻烦问下,我去哪里找错误信息呢?
require_once、require 失败则必然有错误信息
这与在哪里找,要看你的 php.ini 的设置
如果 display_errors = On 则会显示在页面中
我按照你说的设置了,可是没有错误信息出来哦。是不是在程序里要写什么显示错误信息的语句啊?
这个问题已经解决了,天啊,试了好多好多的方法!!!头大。不过谢谢版主了

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Alipay PHP ...

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.
