导入

  1. public function excel_put(){
  2. //先做一个文件上传,保存文件
  3. $path=$_FILES['file'];
  4. $filePath = "uploads/".$path["name"];
  5. move_uploaded_file($path["tmp_name"],$filePath);
  6. //默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
  7. //表格字段名字
  8. $data=array('B'=>'name','C'=>'pwd','D'=>'money1','E'=>'salt');
  9. $tablename='user1';//表名字
  10. $this->excel_fileput($filePath,$data,$tablename);
  11. }
  12. private function excel_fileput($filePath,$data,$tablename){
  13. $this->load->library("phpexcel");//ci框架中引入excel类
  14. $PHPExcel = new PHPExcel();
  15. $PHPReader = new PHPExcel_Reader_Excel2007();
  16. if(!$PHPReader->canRead($filePath)){
  17. $PHPReader = new PHPExcel_Reader_Excel5();
  18. if(!$PHPReader->canRead($filePath)){
  19. echo 'no Excel';
  20. return ;
  21. }
  22. }
  23. // 加载excel文件
  24. $PHPExcel = $PHPReader->load($filePath);
  25. // 读取excel文件中的第一个工作表
  26. $currentSheet = $PHPExcel->getSheet(0);
  27. // 取得最大的列号
  28. $allColumn = $currentSheet->getHighestColumn();
  29. // 取得一共有多少行
  30. $allRow = $currentSheet->getHighestRow();
  31. // 从第二行开始输出,因为excel表中第一行为列名
  32. for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
  33. /**从第A列开始输出*/
  34. //echo $allColumn;
  35. for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){
  36. $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();
  37. //print_r($val);
  38. //die;
  39. if($currentColumn == 'A')
  40. {
  41. //echo $val."\t";
  42. }else if($currentColumn <= $allColumn){
  43. $data1[$currentColumn]=$val;
  44. }
  45. }
  46. foreach($data as $key=>$val){
  47. $data2[$val]=$data1[$key];
  48. }
  49. $this->db->insert($tablename,$data2);
  50. //print_r($data2);
  51. //echo "</br>";
  52. }
  53. //echo "\n";
  54. echo "导入成功";
  55. }

导出

    1. header("Content-type:application/vnd.ms-excel");
    2. header("Content-Disposition:attachment;filename=123.xls");
    3. $array=$this->db->get("shop_address")->result_array();
    4. $str = "Id\tName\tPid\n";
    5. foreach ($array as $val) {
    6. $str .=  $val['id'] . "\t" .$val['name'] . "\t" . $val['pid'] . "\n";
    7. }
    8. echo $str;

PHP实现excel的更多相关文章

  1. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  2. excel 日期/数字格式不生效需要但双击才会生效的解决办法

    原因: Excel2007设置过单元格格式后,并不能立即生效必须挨个双击单元格,才能生效.数据行很多.效率太低. 原因:主要是一些从网上拷贝过来的日期或数字excel默认为文本格式或特殊-中文数字格式 ...

  3. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  4. Word/Excel 在线预览

    前言 近日项目中做到一个功能,需要上传附件后能够在线预览.之前也没做过这类似的,于是乎就查找了相关资料,.net实现Office文件预览大概有这几种方式: ① 使用Microsoft的Office组件 ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

    系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...

  6. C#中如何给Excel添加水印

    我们知道Microsoft Excel并没有内置的功能直接给Excel表添加水印,但是其实我们可以用其他变通的方式来解决此问题,如通过添加页眉图片或艺术字的方法来模仿水印的外观.所以在这篇文章中,我将 ...

  7. C#中如何在Excel工作表创建混合型图表

    在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...

  8. 【C#附源码】数据库文档生成工具支持(Excel+Html)

    [2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...

  9. 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)

    很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

  10. C#通过NPOI操作Excel

    参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-post.html http://www.yuanjiaocheng.net/w ...

随机推荐

  1. Go语言中slice使用注意事项

    Go 语言中的slice类型可以理解为是数组array类型的描述符,包含了三个因素: 指向底层数组的指针 slice目前使用到的底层数组的元素个数,即长度 底层数组的最大长度,即容量 因此当我们定义一 ...

  2. 【唯星宠物】——CSS/BootStrap/Jquery爬坑之响应式首页

    前言:唯星宠物产品官网,分为首页.子页和登录注册页三个页面,除网页内容设计与图片素材的部分使用网上的材料之外,其余内容呈现以及功能模块全部为自己重构. 一.响应式轮播banner 思路:使用BootS ...

  3. 阿里JAVA开发手册零度的思考理解(二)

    转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流-- 上篇文章:阿里JAV ...

  4. Leetcode题解(十一)

    31.Next Permutation 题目 这道题目的意思是给定一个序列,找出其按照字典顺序的下一个顺序,如果给定顺序是字典中的最后一个顺序,其下一个顺序则为字典中的第一个顺序.比如: 1,2,3, ...

  5. CentOS卸载原有旧版OPENJDK并安装SUNJDK解决方案

    PS:由于图片是安装后进行截图所以出现的是1.8版本,步骤是完全正确的. 一.检测JDK 首先你要打开终端,为避免可能出现的权限问题建议直接su进入root.(PS:密码可以输入但不显示) 然后输入j ...

  6. Node.js初探之POST方式传输

    小知识:POST比GET传输的数据量大很多 POST发数据--"分段" 实例: 准备一个form.html文件: <!DOCTYPE html> <html> ...

  7. 二:Redis快速入门及应用

    Redis的使用难吗?不难,Redis用好容易吗?不容易.Redis的使用虽然不难,但与业务结合的应用场景特别多.特别紧,用好并不容易.我们希望通过一篇文章及Demo,即可轻松.快速入门并学会应用. ...

  8. android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications

    注:本文内容来自:https://developer.android.com/training/wearables/notifications/index.html 翻译水平有限,如有疏漏,欢迎批评指 ...

  9. [转载] Linux五种IO模型

      转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型性能分析   目录(?)[-] 概念理解 Lin ...

  10. CLR类型设计之泛型(二)

    在上一篇文章中,介绍了什么是泛型,以及泛型和非泛型的区别,这篇文章主要讲一些泛型的高级用法,泛型方法,泛型接口和泛型委托,协变和逆变泛型类型参数和约束性,泛型的高级用法在平时的业务中用的不多,多用于封 ...