PHP导入导出Excel代码


Posted in PHP onJuly 07, 2015

一.导入

导入需要使用能读取Excel的组件,网上也有比较好的组件,这里分享我使用的:下载  提取码:vxyn。(注意两个文件有引用关系)

<?php
//传入要导入的Excel的文件名
function import_to_DB($filename) {
  require_once'reader.php';
  $data = new Spreadsheet_Excel_Reader();   //创建读取Excel的对象
  $data->setOutputEncoding('utf-8');  //设置读取Excel内容后输出的字符编码
  $data->read("data/Excel/{$filename}.xls");
  $db = mysql_connect('localhost', '用户名', '密码') or die("Could not connect to database."); //连接数据库  
  mysql_query("set names 'uft8'"); //输出中文  
  mysql_select_db('数据库名'); //选择数据库  
  error_reporting(E_ALL ^ E_NOTICE);
  for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
    echo $data->sheets[0]['cells'][$i][列数];
    //这里可以把每一行相应列的值插到数据库中,如:
    /*
    $sql="insert "表名" values(对应项...)";
    mysql_query($sql);
    可加上错误判断
    */ 
  } 
?>

总之,能够读出表格中每一行中的相应列$data->sheets[0][行][列]的值,插入操作就好办了。

二.导出

导出可以利用MIME协议轻松导出表格文件,不用依赖任何组件。按如下格式设置header即可导出Excel,同时浏览器进行下载

header('Content-type: text/html; charset=utf-8');
header("Content-type:application/vnd.ms-excel;charset=UTF-8"); //application/vnd.ms-excel指定输出Excel格式
header("Content-Disposition:filename=表格文件名.xls"); //输出的表格名称

完整代码如下:

<?php 
header('Content-type: text/html; charset=utf-8');
header("Content-type:application/vnd.ms-excel;charset=UTF-8"); 
header("Content-Disposition:filename=表格文件名.xls");
$conn = mysql_connect("localhost","root","数据库密码") or die("不能连接数据库");
mysql_select_db("数据库名", $conn);
mysql_query("set names 'UTF-8'");
$sql="select * from 表名 where 条件";

$result=mysql_query($sql);
echo "表头1\t表头2\t表头3\n";
while($row=mysql_fetch_array($result)){
  echo $row[0]."\t".$row[1]."\t".$row[2]."\n";
}
?>

这里其实\t就是换格,\n就是换行。在一个网页中设置这个php文件的链接,当点击时浏览器会自动把传过来的流保存为Excel文件。

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格

导出类

PHPExcel类导出excel,同时对PHPExcel做了些精简处理,基本上可以满足数据导出excel的功能

代码如下:

<?php
//载入PHPExcel类
require './phpexcel/PHPExcel.php';
//创建一个excel对象实例
$objPHPExcel = new PHPExcel();
//设置文档基本属性
$objProps = $objPHPExcel->getProperties();
$objProps->setCreator("Lao Mao");
$objProps->setLastModifiedBy("Lao Mao");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");
//设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objPHPExcel->setActiveSheetIndex(0);
//设置当前活动sheet的名称
$objActSheet = $objPHPExcel->getActiveSheet();
$objActSheet->setTitle('测试Sheet');
//设置单元格内容3water.com
//这里的数据可以从数据库中读取,然后再做循环处理
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'a1');
$objPHPExcel->getActiveSheet()->SetCellValue('A2', 'a2');
$objPHPExcel->getActiveSheet()->SetCellValue('A3', 'a3');
$objPHPExcel->getActiveSheet()->SetCellValue('A4', 'a4');
$objPHPExcel->getActiveSheet()->SetCellValue('A5', 'a5');
$objPHPExcel->getActiveSheet()->SetCellValue('B1', 'b1');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'b2');
$objPHPExcel->getActiveSheet()->SetCellValue('B3', 'b3');
$objPHPExcel->getActiveSheet()->SetCellValue('B4', 'b4');
$objPHPExcel->getActiveSheet()->SetCellValue('B5', 'b5');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'c1');
$objPHPExcel->getActiveSheet()->SetCellValue('C2', 'c2');
$objPHPExcel->getActiveSheet()->SetCellValue('C3', 'c3');
$objPHPExcel->getActiveSheet()->SetCellValue('C4', 'c4');
$objPHPExcel->getActiveSheet()->SetCellValue('C5', 'c5');
//输出文档
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
//设置header头部信息,并输出到浏览器
//header('Content-Type: application/vnd.ms-excel');
//header("Content-Disposition:attachment; filename=demo.xls");
//header('Cache-Control: max-age=0');
//$objWriter->save('php://output');
//保存至某一位置
$objWriter->save(dirname(__FILE__) . '/demo.xls');

导入excel的方法:

代码:

<?php
//载入PHPExcel类
include(dirname(__FILE__).'/phpexcel/PHPExcel.php');
$Obj = new PHPExcel_Reader_Excel5();
$Obj->setReadDataOnly(true);
//读取demo.xls文件
$phpExcel = $Obj->load(dirname(__FILE__).'/output.xls');
//获取当前活动sheet
$objWorksheet = $phpExcel->getActiveSheet();
//获取行数
$highestRow = $objWorksheet->getHighestRow();
//获取列数
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
//循环输出数据 3water.com
$data = array();
for($row = 1; $row <= $highestRow; ++$row) {
 for($col = 0; $col < $highestColumnIndex; ++$col) {
 $val = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
 $data[$row][$col] = trim($val);
 }
}
echo '<pre>';
print_r($data);
echo '</pre>';

但是这种方式有缺陷,老版本的excel有个数据上限,最多65536行数据,这时我们就无法通过excel来实现大数据的导出, 但我估计也没几个有这么我数据吧,当然如果有可以考虑使用csv来操作

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
php日期操作技巧小结
Jun 25 PHP
PHP 无限级分类
May 04 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 #PHP
10条php编程小技巧
Jul 07 #PHP
php实现的任意进制互转类分享
Jul 07 #PHP
Apache服务器下防止图片盗链的办法
Jul 06 #PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 #PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
Jul 06 #PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 #PHP
You might like
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
django主动抛出403异常的方法详解
2019/01/04 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
什么是servlet
2012/05/08 面试题
高中生职业生涯规划书
2014/02/24 职场文书
工作建议书范文
2014/05/13 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
生产现场禁烟通知
2015/04/23 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
Golang生成Excel文档的方法步骤
2021/06/09 Golang
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
Linux中文件的基本属性介绍
2022/06/01 Servers