ajax导出表格数据格式化,Excel数据上传并判断数据有效性最后导出错误数据实例(AJAX实现)...

此实例只是针对PHP语言所用,其它语言也是一样思路。

此实例所用到类:PHPExcel类;GitHub下载地址:https://github.com/PHPOffice/PHPExcel

上传Excel在这里不做解释。

这里针对此功能,进行上传文件并判断手机号是否重复,如果重复即提示,并导出重复号码。

PHP后台实例代码如下:case 'setnumberdate':

$file = $_REQUEST['file'];

$filename= $_SERVER['DOCUMENT_ROOT'].$file;

require_once dirname(__FILE__) . '/lib/Excel/PHPExcel/IOFactory.php';//引入上述下载类

$objReader = PHPExcel_IOFactory::load($filename);//获取文件读取操作对象

$sheets = $objReader->getAllSheets();

$sheet = $sheets[0];

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

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

$i=0;

for($currentRow=2;$currentRow<=$allRow;$currentRow++){

for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){

$address=$currentColumn.$currentRow;//数据坐标

$cell =$sheet->getCell($address)->getValue();

if($currentColumn=='A'){

$number = $cell;

}

if ($currentColumn=='B') {

$province = $cell;

}

if ($currentColumn=='C') {

$city = $cell;

}

$is_number = "select number FROM s_liantong_numberpool where number='$number'";

$res = $obj_db_main->doquery_row($is_number);

if ($res) {

$phone_arr[] = $number;

break;

}else{

$insert_number = "INSERT into s_liantong_numberpool set number='{$number}'";

$obj_db_main->doquery_row($insert_number);

$i++;

}

}

}

/**

* 创建文件并保存-为保存到本地查看留备

*/

if (!empty($phone_arr)) {

$str = "手机号\t\n";

foreach ($phone_arr as $vo) {

$str .=   $vo . "\t\n";

}

$filename = date('Ymd').rand(10000,99999) . '.xls';

$out_put_file = new _myfuncgettime;

$objPHPExcel=new PHPExcel();

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue('A1','号码');

$len_phont = count($phone_arr);

for ($i=2; $i <= $len_phont; $i++) {

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue("A".$i, $phone_arr[$i]);

}

$objPHPExcel->setActiveSheetIndex(0);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');

header('Cache-Control: max-age=0');

$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

$response = $out_put_file->saveExcelToLocalFile($objWriter,$filename);//此方法为:移动文件到指定目录,并返回文件地址

$Jsonstr['url']=$response;

$Jsonstr['rltcode']=1;

$Jsonstr['goodsum']=$len_phont;

echo json_encode($Jsonstr);

exit;

}

$Jsonstr['rltcode']=0;

$Jsonstr['goodsum'] = $i;

echo json_encode($Jsonstr);break;

这里使用AJAX方式传递数据,数据类型为JSON,后台返回也同样需要转换为JSON格式并返回。

上述方法当中 saveExcelToLocalFile 方法如下:function saveExcelToLocalFile($objWriter,$filename){

$filePath = '../uploadfile/uploadliantongphone/'.$filename;

$objWriter->save($filePath);

return $filePath;

}

数据后台返回之后,前端进行重复数据下载,思路:根据程序后台处理结果返回的URL进行访问即可下载:

前台代码如下:$("#upfile").click(function(){

//此为上传按钮,即把Excel文件进行后台数据判断

var f=$(this).attr("data-file");

var serviceid = "setnumberdate";

$.ajax({

type: "post",

url: './class_phone_admin.php',

data: {"file":f,"serviceid":serviceid},

dataType:"json",

async:true,

success: function(d){

if (d.rltcode == 0) {

alert(d.goodsum+"条数据全部导入完毕");

location.reload();

}else if (d.rltcode == 1) {

//*进行重复号码导出*//

alert(d.goodsum+"条数据有问题");

location.href="../"+d.url;        //这里接收返回的Excel文件地址,进行下载重复号码文件

}else{

alert("数据导入失败,请核对数据正确性");

}

}

});

});

最后,效果如下:

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

PHP导入TXT文件实例:

上传文件都是一样的步骤,这里只针对读取文件做实例:

后台代码如下:case 'setaqynumberdate':

$province = $_REQUEST['province'];

$file = $_REQUEST['file'];

if($file){

$file_number = $_SERVER['DOCUMENT_ROOT'].$file;//获取文件绝对路径

$f=fopen(ltrim($file_number,'/'),'r');                            //打开文件,并去空格

while(!feof($f)){                                                         //判断是否到达数据结尾

$number=fgets($f);                                           //取出一条数据

if ($number == '') {

continue;

}

$inset_sql = "INSERT into s_aqy_number (number,number_province) VALUES ('$number','$province')";

$obj_db_main->doexec($inset_sql);

}

fclose($f);

$Jsonstr['code'] = "已成功导入号码";

$Jsonstr['flag'] = true;

echo json_encode($Jsonstr);

exit;

}

$Jsonstr['code'] = "服务器错误,请稍后重试";

$Jsonstr['flag'] = flase;

echo json_encode($Jsonstr);

break;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值