php对excel的操作主要通过引入 excel_reader2.php 或者是PHPExcel 类进行   两个文件自行下载

php 对其读操作:

文件目录结构

excel_reader2.php  在网上进行下载

代码:

  1. <html>
  2. <head>
  3. <style>
  4. table td{border:2px solid red;padding:2px;}
  5. table{}
  6. </style>
  7. </head>
  8. <body>
  9. <?php
  10. error_reporting(E_ALL ^ E_NOTICE);
  11. require_once 'excel_reader2.php'; //引入excel类
  12. $data = new Spreadsheet_Excel_Reader("test.xls"); //获取将要读取的excel文档
  13. echo $data->sheets[0]['numRows']; //获得excel中的总表格数
  14. echo "<table style='border:2px solid red;'>";
  15. for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) //从一开始计数
  16. {
  17. echo "<tr style='border:2px solid red;'>";
  18. echo "<td>" .$data->sheets[0]['cells'][$i][1]."</td><td>".
  19. $data->sheets[0]['cells'][$i][2]."</td><td>". //班级
  20. $data->sheets[0]['cells'][$i][3]."</td><td> " . //姓名
  21. $data->sheets[0]['cells'][$i][4]. "</td><td> " . //性别
  22. $data->sheets[0]['cells'][$i][5]."</td>" ; //班内序号
  23. echo "</tr>";
  24. }
  25. echo "</table>";
  26. ?>
  27. </body>
  28. </html>

运行结果:

php进行写操作: 这样结果是直接提供下载

  1. <?php
  2. echo "ok";
  3. header("Content-type:application/vnd.ms-excel");
  4. header("Content-Disposition:filename=test.xls");
  5. echo "test1\t";
  6. echo "test2\t\n";
  7. echo "test1\t";
  8. echo "test2\t\n";
  9. echo "test1\t";
  10. echo "test2\t\n";
  11. echo "test1\t";
  12. echo "test2\t\n";
  13. echo "test1\t";
  14. echo "test2\t\n";
  15. echo "test1\t";
  16. echo "test2\t\n";
  17. /*
  18. ,然后按照每一列数据结束后加\t,每一行数据结束后加\n的方法echo出来,
  19. 在php的开头用header("Content-type:application/vnd.ms-excel");
  20. 表示输出的是excel文件,用header("Content-Disposition:filename=test.xls");
  21. 表示输出的文件名为text.xls。这样就ok了。
  22. */
  23. ?>

直接读取将其显示在网页中只需要把前面的两个header变为

  1. header("Content-type:application/vnd.ms-excel");
  2. header( "Content-Disposition:attachment;filename=名称.xls");

thinkphp对excel操作一般是将文件上传到服务器上在进行将数据读入到数据库,再次将不符合要求的数据写入excel供用户下载

excel_reader2.php 和PHPExcel 类 放在thinkphp 框架中,具体位置如图,红线就是两个文件

后台处理代码:

  1. //将模板导入数据库并将不合格数据生成excel提供下载
  2. public function excel(){
  3. import("ORG.Net.UploadFile");
  4. Vendor('excel_reader2');
  5. Vendor('PHPExcel.PHPExcel');
  6. $upload = new UploadFile();// 实例化上传类
  7. $upload->savePath = $data['url']= './Public/upload/model/';
  8. $upload->allowExts = array('xls');// 设置附件上传类型
  9. $upload->saveRule ="abc".time();
  10. if(!$upload->upload()) {// 上传错误提示错误信息
  11. $this->error($upload->getErrorMsg());
  12. }else{// 上传成功 获取上传文件信息
  13. $info = $upload->getUploadFileInfo();
  14. }
  15.  
  16. //进行excel的读取
  17. $filename="./Public/upload/model/".$info[0]["savename"];
  18. $data = new Spreadsheet_Excel_Reader($filename);
  19. $model=M("user_info");
  20. //读取数据库检查上传上的账号是否已存在
  21. $j=0;
  22. for($i=2;$i<=$data->sheets[0]['numRows'];$i++){
  23. $user_id=$data->sheets[0]['cells'][$i][1];//获取excel中的id
  24. $count=$model->where("idcard='$user_id'")->count();
  25. if($count){ //账号已经存在则将数据存放进数组,将其读入excel供下载
  26. $arr[$j]['idcard']=$user_id;
  27. $arr[$j]['user_name']=$data->sheets[0]['cells'][$i][2];
  28. $arr[$j]['sex']=$data->sheets[0]['cells'][$i][3];
  29. $j++;
  30. }else{//将数据存入数据库
  31. $DATA['user_name'] =$data->sheets[0]['cells'][$i][2]; //获取用户名
  32. $DATA['sex'] =$data->sheets[0]['cells'][$i][3]; //获取性别
  33. $DATA['idcard'] = $user_id;
  34. $DATA['pwd']=md5("123456");
  35. $DATA['tellphone']="";
  36. $DATA[birthday]='1970-01-01';
  37. $DATA['creat_user']=$_SESSION['user_name'];
  38. $DATA['user_state']='1';
  39. $DATA['is_del']='0';
  40. $DATA['user_type']='1';
  41. $DATA['creat_time']=time();
  42. $model->add($DATA);
  43. }
  44. }
  45.  
  46. //进行excel的写入
  47. $objPHPExcel = new PHPExcel();
  48. foreach($arr as $k => $v){
  49. $num=$k+1;
  50. $objPHPExcel->setActiveSheetIndex(0)
  51. //Excel的第A列,uid是你查出数组的键值,下面以此类推
  52. ->setCellValue('A'.$num, $v['idcard'])
  53. ->setCellValue('B'.$num, $v['user_name'])
  54. ->setCellValue('C'.$num, $v['sex']);
  55. }
  56. $objPHPExcel->getActiveSheet()->setTitle('User');
  57. $objPHPExcel->setActiveSheetIndex(0);
  58. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  59. //$objWriter->save('php://output');
  60. $file=time().".xls";
  61. $saveload="./Public/upload/model/abcd".$file;
  62. echo $saveload;
  63. $objWriter->save($saveload);//下载到文件
  64. $num=$data->sheets[0]['numRows']-1;
  65. $num2=$data->sheets[0]['numRows']-1-count($arr);
  66. $string="<br /><span style='margin-left:45px;'>共有<font color='red'>".$num."</font>条数据<span><br />";
  67. $string .= "<span style='margin-left:45px;'>上传成功<font color='red'>".$num2."</font>条<span><br />";
  68. $string .= "<span style='margin-left:45px;'>失败<font color='red'>".count($arr)."</font>条<span><br />";
  69. $string .="<a href='\excour\src\excour\Public\Upload\model\abcd".$file."'>下载失败数据</a>";
  70. echo $string;
  71. exit;
  72. }

php 和thinkphp 对excel操作的更多相关文章

  1. Npoi导入导出Excel操作

    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...

  2. Delphi Excel 操作大全

    Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...

  3. C#EXCEL 操作类--C#ExcelHelper操作类

    主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Excel文件5.将指定的集合数据导出至Exce ...

  4. Excel 操作类

    转载:http://www.cnblogs.com/fellowcheng/archive/2010/08/21/1805158.html ExcelHelper(Excel2007) Code hi ...

  5. C# excel操作

    开源的Excel操作项目: http://www.cnblogs.com/lwme/archive/2011/11/27/2265323.html 添加引用:Microsoft Excel 11.0 ...

  6. [Excel操作]Microsoft Office Excel 不能访问文件

    最近,客户服务器迁移,因操作系统环境变化而引起的的环境问题一堆,遇到的问题并解决方法在“[Excel]操作”类别会体现. Microsoft Office Excel 不能访问文件“C:\\LMSEx ...

  7. C#常用工具类——Excel操作类

    /// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...

  8. 报表中的Excel操作之Aspose.Cells(Excel模板)

    原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...

  9. C# Excel操作类

    /// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...

随机推荐

  1. Eclipse ADT 插件安装慢的解决的方法

    參考贴:http://blog.csdn.net/ludonghai715/article/details/6973433 在天朝非常多事情就不可避免的蛋疼,download.eclipse.org ...

  2. 在C++中使用C#编写的类2

    在那篇<在C#中使用C++编写的类>中我介绍了如何在C#中使用C++编写的类.可是由于C#在用户界面设计.数据库存储和XML文件读取等方面的优势,有时候也会出现要在C++中使用C#编写的类 ...

  3. 《Python爬虫学习系列教程》学习笔记

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  4. 在OpenShift平台开发Node.js程序

    设置process.env方便本地调试 --------------------- 修改~/.profile,增加下面两行,然后执行`. ~/.profile`: export OPENSHIFT_N ...

  5. Windows Azure 安全最佳实践 - 第 7 部分:提示、工具和编码最佳实践

    在撰写这一系列文章的过程中,我总结出了很多最佳实践.在这篇文章中,我介绍了在保护您的WindowsAzure应用程序时需要考虑的更多事项. 下面是一些工具和编码提示与最佳实践: · 在操作系统上运行 ...

  6. 简单的方式实现javascript 小数取整

    JS: function truncateNumber(n){ return n|0; } 測试: console.log(truncateNumber(12.345)); 浏览器打印出12

  7. [置顶] Hibernate从入门到精通(七)多对一单向关联映射

    上次的博文Hibernate从入门到精通(六)一对一双向关联映射中我们介绍了一下一对一双向关联映射,本次博文我们讲解一下多对一关联映射 多对一单向关联映射 多对一关联映射与一对一关联映射类似,只是在多 ...

  8. c语言: Standard C 语言标准函数库

    Standard C 语言标准函数库速查 (Cheat Sheet) http://ganquan.info/standard-c/ c语言标准头: <assert.h> 断言 <c ...

  9. Android-x86 4.4-r5 发布,PC 上的安卓系统

    Android x86 即运行于 x86 PC上的Android操作系统,目前已经支持大部分安卓程序. Android X86平台是由Beyounn和Cwhuang主持设计的.项目的主要目的在于为X8 ...

  10. c#实现Javascript的encodeURIComponent()函数

    原文  c#实现Javascript的encodeURIComponent()函数 国内外各搜索引擎,均用JavaScript的encodeURIComponent()函数对搜索关键字进行编码,终于找 ...