我想将Excel文件上传到我们的网页,然后将相应的数据存储在数据库中.然后我想检索所有数据并以表格格式显示它.我有一个代码,但使用它我无法上传所有Excel文件.只能上传一种格式.
以下是功能.但是有一些限制.
public function check_excel($filename) { $path='./assets/uploads/excel/'.$filename; $this->load->library('excel'); $inputFileType = PHPExcel_IOFactory::identify($path); $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = PHPExcel_IOFactory::load($path); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); $xf[]=''; $result[]=''; $first_check=''; $var_check=0; for ($row = 13; $row <= $highestRow; $row++) { $xf[$row]=$objPHPExcel->getActiveSheet()->getCell('A'.$row)->getXfIndex(); // Get sheet index value if($row>13 && $row<16) //This block check first kpi data expand or not { if($xf[$row-1]==$xf[$row]) //check parent and child sheet index value same $first_check='false'; if ($row==15) { if($xf[$row]==$xf[$row-1] || $xf[$row]==$xf[$row-2]) // check the grand-child sheet index value same in parent and child $first_check='false'; else { $first_check='true'; $a=$row-2; $b=$row-1; $check_kpi=$objPHPExcel->getActiveSheet()->getCell('A'.$a)->getXfIndex(); $check_unit=$objPHPExcel->getActiveSheet()->getCell('A'.$b)->getXfIndex(); $check_sub_unit=$objPHPExcel->getActiveSheet()->getCell('A'.$row)->getXfIndex(); } } } if($first_check=='true') //This block check second kpi to upto last kpi data expand or not { if($row>15) { if($var_check==1) // This block check the child data expand or not { if($check_unit!=$objPHPExcel->getActiveSheet()->getCell('A'.$row)->getXfIndex()) { $result[$row]='false'; break; } } if($var_check==2) // this block check the grand - child data expand or not { if($check_sub_unit!=$objPHPExcel->getActiveSheet()->getCell('A'.$row)->getXfIndex()) { $result[$row]='false'; break; } } if($xf[$row]!=$check_sub_unit) { if($xf[$row]!=$check_unit) $var_check=1; // var_check value is one,the kpi is present else $var_check=2; // var_check value is two,the unit is present } else $var_check=0; // var_check value is zero,the sub_unit is present } } else if($first_check=='false') { $result[$row]='false'; break; } } $return='true'; for ($row = 13; $row <= $highestRow; $row++) { if(!empty($result[$row])) { if($result[$row]=='false'){ $return='false'; break; } } } return $return; }
听起来你正在使用一个使用固定列表的关系数据库(例如MysqL,Postgres等).
原文链接:/php/137969.html您应该使用基于文档的数据库(例如CouchDB,Mongo等).这将是最好的解决方案.
这是一个基本的例子:
>为实体创建一个表(excel文件):EntityID,ExcelFileName
>为属性创建表(列信息):AttributeID,EntityID,AttributeName
>为值创建一个表(excel row / column):ValueID,RowNumber,AttributeID,AttributeValue
缺点是AttributeValue没有特别输入(它只是varchar / text).您可以通过向属性表添加“AttributeType”来解决此问题,然后在您的代码中使用该属性表来了解该列应包含的数据类型.但是,除非您事先知道Excel文件的内容/格式,否则您可能必须要GUESS列的类型是什么……只要excel文件没有搞砸就不难.
如果您只是显示导入的数据,这可能不是什么大问题.