本文目录一览:
- 1、PHP Excel大批量导入崩溃怎么办?
- 2、php中如何将execl的数据导入到数据库中
- 3、导入excel文件,后端php处理导入的数据并存入数据库,需要前后端结合的demo!
- 4、php导入excel 怎么获取excel表格数据
- 5、怎么使用php把表格中的数据导入到excel中
- 6、为什么php导入excle出错
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