php – 上传Excel并将其存储在数据库中?

前端之家收集整理的这篇文章主要介绍了php – 上传Excel并将其存储在数据库中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将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等).

您应该使用基于文档的数据库(例如CouchDB,Mongo等).这将是最好的解决方案.

但是,如果您使用关系数据库,则可以使用EAV model.

这是一个基本的例子:

>为实体创建一个表(excel文件):EntityID,ExcelFileName
>为属性创建表(列信息):AttributeID,EntityID,AttributeName
>为值创建一个表(excel row / column):ValueID,RowNumber,AttributeID,AttributeValue

缺点是AttributeValue没有特别输入(它只是varchar / text).您可以通过向属性添加“AttributeType”来解决此问题,然后在您的代码中使用该属性表来了解该列应包含的数据类型.但是,除非您事先知道Excel文件内容/格式,否则您可能必须要GUESS列的类型是什么……只要excel文件没有搞砸就不难.

如果您只是显示导入的数据,这可能不是什么大问题.

如果您有这样的需求,还有其他(更复杂的)方法来实现EAV,包括带有类型列的方法.

原文链接:/php/137969.html

猜你在找的PHP相关文章