我想在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请给我一些示例代码。
答案 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"];
}