当前位置: 首页 > news >正文

PHP导入Excel和导出数据为Excel文件

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

有时需要将Excel表格的数据导入到mysql数据库中,我们使用PHP的一个开源项目PHP-ExcelReader可以轻松实现Excel的导入。另外将mysql数据导出为Excel与本站上篇文章中导出CSV一样,只是将逗号分割符换成制表符,并修改header信息就可以了。

下载源码

1、导入XLS

PHP-ExcelReader这是一个开源的项目,主要是来解析excel的文件,您可以到http://sourceforge.net/projects/phpexcelreader获取最新版的源码。下载之后解压,主要用到excel文件夹里面的两个文件reader.php和oleread.inc。 导入Xls处理流程:选择xls文件->上传xls文件到服务器->通过PHP-ExcelReader解析excel->批量入库。

include_once("excel/reader.php"); //引入PHP-ExcelReader 
$tmp = $_FILES['file']['tmp_name']; 
if (empty ($tmp)) { 
    echo '请选择要导入的Excel文件!'; 
    exit; 
} 

$save_path = "xls/"; 
$file_name = $save_path.date('Ymdhis') . ".xls"; //上传后的文件保存路径和名称 
if (copy($tmp, $file_name)) { 
    $xls = new Spreadsheet_Excel_Reader(); 
    $xls->setOutputEncoding('utf-8');  //设置编码 
    $xls->read($file_name);  //解析文件 
    for ($i=2; $i<=$xls->sheets[0]['numRows']; $i++) { 
        $name = $xls->sheets[0]['cells'][$i][0]; 
        $sex = $xls->sheets[0]['cells'][$i][1]; 
        $age = $xls->sheets[0]['cells'][$i][2]; 
        $data_values .= "('$name','$sex','$age'),"; 
    } 
    $data_values = substr($data_values,0,-1); //去掉最后一个逗号 
    $query = mysql_query("insert into student (name,sex,age) values $data_values");//批量插入数据表中 
    if($query){ 
        echo '导入成功!'; 
    }else{ 
        echo '导入失败!'; 
    } 
} 

PHP-ExcelReader读取上传的excel文件后,返回一个数组,里面包含了表格的所有信息,你可以循环获取需要的信息。

2、导出XLS

导出XLS流程:读取学生信息表->循环记录构建制表符分隔的字段信息->设置header信息->导出文件(下载)到本地

$result = mysql_query("select * from student"); 
$str = "姓名\t性别\t年龄\t\n"; 
$str = iconv('utf-8','gb2312',$str); 
while($row=mysql_fetch_array($result)){ 
    $name = iconv('utf-8','gb2312',$row['name']); 
    $sex = iconv('utf-8','gb2312',$row['sex']); 
    $str .= $name."\t".$sex."\t".$row['age']."\t\n"; 
} 
$filename = date('Ymd').'.xls'; 
exportExcel($filename,$str); 
exportExcel函数用于设置header信息。

function exportExcel($filename,$content){ 
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Content-Type: application/vnd.ms-execl"); 
    header("Content-Type: application/force-download"); 
    header("Content-Type: application/download"); 
    header("Content-Disposition: attachment; filename=".$filename); 
    header("Content-Transfer-Encoding: binary"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 

    echo $content; 
} 

此外,关于导入和导出Excel,还可以使用PHPExcel,这个非常强大,大家有空可以去研究,官方网站: http://www.codeplex.com/PHPExcel 导入导出都成,可以导出office2007格式,同时兼容2003


转载自:http://www.9958.pw/post/php_excel

转载于:https://my.oschina.net/u/1179286/blog/686839

相关文章:

  • DOM事件模型 DOM事件流 自定义事件(模拟事件)
  • 计算几何初步-三点顺序
  • 模块化,简单一点
  • 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例
  • GET和POST的区别,何时使用POST?
  • Android 之内容提供程序(Content Provider)
  • 同源策略 跨域
  • matlab基本粒子群算法实现(三)
  • saltstack知道这些就很好用了
  • Es6中常用的新特性
  • Producer和Consumer
  • router 和route push和replace的区别
  • 测试php解析
  • Joomla 2.x, 3.x useful code cheatsheet
  • NavigationDuplicated: Avoided redundant navigation to current location: “/“
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • Hexo+码云+git快速搭建免费的静态Blog
  • JAVA之继承和多态
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • opencv python Meanshift 和 Camshift
  • Python语法速览与机器学习开发环境搭建
  • unity如何实现一个固定宽度的orthagraphic相机
  • 电商搜索引擎的架构设计和性能优化
  • 给github项目添加CI badge
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 一个完整Java Web项目背后的密码
  • ionic入门之数据绑定显示-1
  • Prometheus VS InfluxDB
  • 从如何停掉 Promise 链说起
  • ​一些不规范的GTID使用场景
  • !$boo在php中什么意思,php前戏
  • #、%和$符号在OGNL表达式中经常出现
  • $$$$GB2312-80区位编码表$$$$
  • $.ajax()
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)SpringBoot3---尚硅谷总结
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .bashrc在哪里,alias妙用
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .Net 知识杂记
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net专家(张羿专栏)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [1]-基于图搜索的路径规划基础
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——