在codeigniter中读取.xlsx和.xls数据

时间:2015-08-31 06:49:43

标签: php codeigniter import-from-excel

我想在codeigniter中读取.xlsx或.xls文件的数据。我已经阅读了与之相关的其他问题,但没有任何效果。我使用过phpexcel,读者却没有运气。在我的项目中,我提供了上传excel文件的选项,然后我想读取数据并将其插入数据库。

现在我使用的是phpExcel库,我写道:

    $this->load->library('excel');
    $reader= PHPExcel_IOFactory::createReader('Excel2007');
    $reader->setReadDataOnly(true);
    $path=(FCPATH.'uploads/productfile/'.$_FILES['upload_file']['name']);
    $excel=$reader->load($path);
    $sheet=$excel->setActiveSheetIndex(0);
    for($i=0;$i<=1000;$i++)
    {
      $col1= $sheet->getCellByColumnAndRow(0,$i)->getValue();
      $col2= $sheet->getCellByColumnAndRow(1,$i)->getValue();
      $col3= $sheet->getCellByColumnAndRow(2,$i)->getValue();
      var_dump($col1);
    }

但显示:

  

未捕获的异常&#39; PHPExcel_Exception&#39;有消息&#39;您试图设置   由超出范围索引激活的工作表:0。实际数量   sheet是0请给我一些示例代码。

错误 enter image description here 请给我一些示例代码:

5 个答案:

答案 0 :(得分:3)

试试这个:

 $sheet = $excel->getActiveSheet()->toArray(null,true,true,true);

这将返回当前活动工作表的数组。希望这有帮助。

答案 1 :(得分:2)

这个错误是由我认为PHPexcel读取器功能的初始化错误引起的。 我通常做这样的事情来从excel获取数据:

require_once '../Classes/PHPExcel/IOFactory.php';
$filename = '../uploads/product/abc.xls';
$objPHPExcel = PHPExcel_IOFactory::load($filename);

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $worksheetTitle     = $worksheet->getTitle();
    $highestRow         = $worksheet->getHighestRow(); // e.g. 10
    $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    $nrColumns = ord($highestColumn) - 64;
    $total_rows = $highestRow-1;

    for ($row = 2; $row <= $highestRow; ++ $row) {
    //id
        $cell = $worksheet->getCellByColumnAndRow(0,$row);
        $id = $cell->getValue();
        if(is_null($id)){$id = '#';}
    }

答案 2 :(得分:0)

感谢所有的建议:  我得到了解决方案:

var isVisible = $('#dvData').is(':visible');
alert("dvData is " + isVisible);

答案 3 :(得分:0)

此PHPExcel_IOFactory扩展程序存在问题,如™商标,版权,学位等。

如果特定区块包含此类特殊字符,则无法读取该区块。

答案 4 :(得分:0)

此代码段对我有用,

        $this->load->library('excel');
        $reader= PHPExcel_IOFactory::createReader('Excel2007');
        $reader->setReadDataOnly(true);
        $path= "./media/customer_exports/data-1558003506.xlsx";
        $excel=$reader->load($path);

        $sheet = $excel->getActiveSheet()->toArray(null,true,true,true);
        $arrayCount = count($sheet); 
        for($i=2;$i<=$arrayCount;$i++)
        {                   
            echo $sheet[$i]["A"].$sheet[$i]["B"].$sheet[$i]["C"];
        }