本文目录一览:

PHP Excel大批量导入崩溃怎么办?

项目需要批量导入excel文件,如果里面有重复的数据要怎么处理呢?每插入一次数据都要到数据库查询么?

回复内容:

项目需要批量导入excel文件,如果里面有重复的数据要怎么处理呢?每插入一次数据都要到数据库查询么?

1、如果里面有重复的数据要怎么处理呢?

1

code可以先判断数据库是否有该数据。/code

2、每插入一次数据都要到数据库查询么

1

code是的。/code

先去重得到没有重复的数据,再批量插入数据库。也可以尝试MYSQL中的insert ignore into或 replace into

如果查询比较慢,对不能重复的字段加唯一键,然后用INSERT IGNORE INTO

php批量导入数据出错

我现在要做的是,把一个产品数据从EXCEL中导入到PHP的MYSQL中,导入的过程中,总是会提示“Allowed memory size of 167772160 bytes exhausted (tried to allocate 689919 bytes) in D:/wamp/www/Company/product/admin/uploadOrder.php on line 167”这个错误,然后我分成第100条导入时,就不会提示这个错误,这个是不是内存溢出,有没有好的解决方法呢?

------解决方案--------------------

php.ini中讲memory_limit选项设置大一点,然后重启apache或nginx就行了

------解决方案--------------------

文件太大了,这样的话可以用source命令直接导入!

------解决方案--------------------

php中如何将execl的数据导入到数据库中

1.使用PHP

Excel

Parser

Pro软件,但是这个软件为收费软件;

2.可将EXCEL表保存为CSV格式,然后通过

phpmyadmin

或者SQLyog导入,SQLyog导入的方法为:

·将EXCEL表另存为CSV形式;

·打开SQLyog,对要导入的表格

右击

,点击“导入”-“导入使用加载本地CSV数据”;

·在弹出的对话框中,点击“改变..”,把选择“填写excel友好值”,点击确定;

·在“从文件导入”中选择要导入的CSV文件路径,点击“导入”即可导入数据到表上;

3.一个比较笨的手工方法,就是先利用excel生成

sql语句

,然后再到mysql中运行,这种方法适用于

excel表格

导入到各类

sql数据库

·假设你的表格有A、B、C三

列数据

,希望导入到你的数据库中表格tablename,对应的字段分别是col1、col2、col3

·在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:

1)增加一列(假设是D列)

2)在第一行的D列,就是D1中输入公式:

=CONCATENATE("insert

into

tablename

(col1,col2,col3)

values

(",A1,",",B1,",",C1,");")

3)此时D1已经生成了如下的sql语句:

insert

into

table

(col1,col2,col3)

values

('a','11','33');

4)将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)

5)此时D列已经生成了所有的sql语句

6)把D列复制到一个纯文本文件中,假设为sql.txt

·把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行。

导入excel文件,后端php处理导入的数据并存入数据库,需要前后端结合的demo!

thinkphp3.2和phpexcel导入最基本用法

先整个最基础的代码,理解了这个,后面的就非常简单了

$file_name= './Upload/excel/123456.xls';

        import("Org.Util.PHPExcel");

        import("Org.Util.PHPExcel.IOFactory");

        $objReader = /PHPExcel_IOFactory::createReader('Excel5');

        $objPHPExcel = $objReader-load($file_name,$encode='utf-8');

        $sheet = $objPHPExcel-getSheet(0);

        $highestRow = $sheet-getHighestRow(); // 取得总行数

        $highestColumn = $sheet-getHighestColumn(); // 取得总列数

    

        $s = $objPHPExcel-getActiveSheet()-getCell("A2")-getValue();

表格内容:

再给大家整个一点难度的,先说下思路。

1.上传excel文件,得到它的地址

2.写个处理exl的function,即可

实例代码演示:

public function upload(){

        $files = $_FILES['exl'];

        

        

        // exl格式,否则重新上传

        if($files['type'] !='application/vnd.ms-excel'){

            $this-error('不是Excel文件,请重新上传');    

        }

        

        // 上传

        $upload = new /Think/Upload();// 实例化上传类

        $upload-maxSize   =     3145728 ;// 设置附件上传大小

        $upload-exts      =     array('xls');// 设置附件上传类型

        $upload-rootPath  =     './Upload/'; // 设置附件上传根目录

        $upload-savePath  =     'excel/'; // 设置附件上传(子)目录

        //$upload-subName   =     array('date', 'Ym');

        $upload-subName   =     '';

        // 上传文件  

        $info   =   $upload-upload();

    

        $file_name =  $upload-rootPath.$info['exl']['savepath'].$info['exl']['savename'];

        $exl = $this-import_exl($file_name);

        

        // 去掉第exl表格中第一行

        unset($exl[0]);

        

        // 清理空数组

        foreach($exl as $k=$v){

            if(empty($v)){

                unset($exl[$k]);

            }    

        };

        // 重新排序

        sort($exl);

        

        $count = count($exl);

        // 检测表格导入成功后,是否有数据生成

        if($count1){

            $this-error('未检测到有效数据');    

        }

        

        // 开始组合数据

        foreach($exl as $k=$v){

        

            $goods[$k]['goods_sn'] = $v;

            

            // 查询数据库

            $where['goods_sn'] = array('like','%'.$v.'%');

            $res = M('goods')-where($where)-find();

            

            $goods[$k]['goods_name'] = $res['goods_name'];

            $goods[$k]['goods_thumb'] = $res['goods_thumb'];

            if($res){

                // 是否匹配成功  

                $goods[$k]['is_match']    = '1';

                $f += 1;

            }else{

                // 匹配失败

                $goods[$k]['is_match']    = '0';

                $w += 1;

            }

                    

        }

        // 实例化数据

        $this-assign('goods',$goods);

        //print_r($f);

        

        // 统计结果

        $total['count'] = $count;

        $total['success'] = $f;

        $total['error'] = $w;

        $this-assign('total',$total);

        

        // 删除Excel文件

        unlink($file_name);

        $this-display('info');

            

    }

/* 处理上传exl数据

     * $file_name  文件路径

     */

    public function import_exl($file_name){

        //$file_name= './Upload/excel/123456.xls';

        import("Org.Util.PHPExcel");   // 这里不能漏掉

        import("Org.Util.PHPExcel.IOFactory");

        $objReader = /PHPExcel_IOFactory::createReader('Excel5');

        $objPHPExcel = $objReader-load($file_name,$encode='utf-8');

        $sheet = $objPHPExcel-getSheet(0);

        $highestRow = $sheet-getHighestRow(); // 取得总行数

        $highestColumn = $sheet-getHighestColumn(); // 取得总列数

        

        for($i=1;$i$highestRow+1;$i++){

            $data[] = $objPHPExcel-getActiveSheet()-getCell('A'.$i)-getValue();    

        }

        return $data;    

    }

有问题一定要及时弄清楚

php导入excel 怎么获取excel表格数据

常用的用PHP读取EXCEL的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。

1. 以.csv格式读取

将.xls转换成.csv的文本格式,然后再用PHP分析这个文件,和PHP分析文本没有什么区别。

优点:跨平台,效率比较高、可以读写。

缺点:只能直接使用.csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化。一个文件只有一个SHEET。

PHP有自带的分析.csv函数:fgetcsv

array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )

handle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。

length (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。

delimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。

enclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。

fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。

注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。

当然也可以自己手动分析字符串。

还可以利用fputcsv函数将行格式化为 CSV 并写入文件指针。

2. ODBC链接数据源

优点:支持多种格式,cvs, xls等。支持读写,使用标准SQL语言,和SQLSERVER、MYSQL数据库几乎完全一样。

缺点:值支持windows服务器

3. PHP自定义类

优点:跨平台。某些类支持写操作。支持.xls二进制文件

常用的类有phpExcelReader、PHPExcel。其中后者支持读写,但是需要php5.2以上版本。

phpExcelReader是专门用来读取文件的。返回一个数组,包含表格的所有内容。

该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php。

不过我下载回来的 (版本 2009-03-30),有两点要注意:

reader.php 中的下面这行要修改

将 require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;

改为 require_once ‘oleread.inc’;

example.php 中

修改 $data-setOutputEncoding(’CP1251′);

为 $data-setOutputEncoding(’CP936′);

example2.php 中

修改 nl2br(htmlentities($data-sheets[$sheet]['

怎么使用php把表格中的数据导入到excel中

下面是我写的一个PHP导出数据到CSV问价的函数,你到时候直接调用就行了

/**

 * 导出CSV文件

 * @param string $fileName 文件名字

 * @param string|array $data 导出数据,csv格式的字符串|数值数组

 * @param string $to_encoding 目标转换编码

 * @param string $from_encoding 当前编码

 */

function exportCSV($fileName = '', $data = '', $to_encoding = 'gb2312', $from_encoding = 'utf-8') {

$fileName = empty($fileName) ? date('YmdHis') : $fileName;

// 文件标签

Header("Content-type: application/octet-stream");

header("Content-type: application/vnd.ms-excel; charset=$from_encoding");

Header("Content-Disposition: attachment; filename=$fileName.csv");

$str = '';

if($data) {

if(is_array($data)) {

foreach ($data as $v) {

if(is_array($v)) {

foreach ($v as $vo) {

$str .= (is_numeric($vo) ? "'".$vo : $vo."").",";

}

$str = trim($str, ",")."/r/n";

} else {

$str .= (is_numeric($v) ? "'".$v : $v).",";

}

}

$str = trim($str, ",")."/r/n";

} else {

$str = $data;

}

}

echo mb_convert_encoding($str, "gb2312", "utf-8");

exit;

}

为什么php导入excle出错

//php获取form表单提交的文件信息

$file = $_FILES['execl']['name'];

$tmp_name = $_FILES['execl']['tmp_name'];

//移动上传的文件function d_file_move($file,$filetempname){ $filePath = "./upfile/";//设置上传文件的路径 if(!is_dir($filePath)) mkdir($filePath);//检查并创建文件夹 $time = date('YmdHis',time());//设置文件名,注意设置时区 $extend = strchr($file,'.');//获取文件后缀 $name = $time.$extend;//设置上传后完整的文件名 $uploadfile = $filePath.$name;//文件路径 $res = move_uploaded_file($filetempname,$uploadfile);//通过move_uploaded_file函数移动文件到指定目录 if($res) return $uploadfile;//如果成功返回当前文件路径 return false;}

//通过调用d_file_move函数来移动form表单上传的文件

$file_name = $this-d_file_move($file,$tmp_name);

现在再使用PHP批量导入excel的类,来读取移动后的文件路径,如:

$data = new Spreadsheet_Excel_Reader(); $data-setOutputEncoding('utf-8'); $resval = $data-read($file_name);

这样就可以避开

The filename *.xls is not readable