【PHP】导入、导出Excel表格(有使用PHPExcel和不使用的两个版本)
------------ 首先,导出excel ----------------
一、不使用PHPExcel的版本,很简单的一个方法,简洁。推荐
很简单的导出一个excel表格,不需要下载任何的插件和PHPExcel等。可以来借着看看
直接在路由里面指向下面这个方法,然后就是数据的拼接和格式输出,拿去用吧。(当然也可以封装起来使用)
if (isset ( $export_out )) {
$wh = " 1=1 "; $filename = "报名支付成功.xls";
$j_status = 'ok';
$wh .=" and j_status = '".$j_status."'";
$wh .=" order by on_time desc ";
$export_website_out_arr = db_factory::query(sprintf("select * from %switkey_xian_join where ".$wh,TABLEPRE));
$bank_arr['alipayjs'] = "随便写什么";
$contents = "<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" >
<caption height='25'> <b>".$filename."</b> </caption>
<tr>
<th width=\"60\" align=\"left\">编号</th>
<th width=\"60\" align=\"left\">订单号</th>
<th width=\"60\" align=\"left\">姓名</th>
<th width=\"60\" align=\"left\">电话</th>
<th width=\"100\" >金额 </th>
<th witdh=\"\">单位</th>
<th witdh=\"\">税号 </th>
<th witdh=\"\" >地址</th>
<th witdh=\"\" >时间</th>
</tr>
";
$k = 1;
foreach ( $export_website_out_arr as $key => $value ) {
$contents .= "<tr>
<td align=left>" . ($k ++) . "</td>
<td align=left>" . 'Activity-xian'.$value[j_id] . "</td>
<td align=left>" . $value[j_name] . "</td>
<td align=left>'" . $value[j_phone]. "</td>
<td align=left>¥ " . $value [j_amount] . "</td>
<td align=left>" . $value [j_company] . "</td>
<td align=left>'" . $value [j_number] . "</td>
<td align=left>'" . $value [j_address] . "</td>
<td align=left>" . date ( "Y-m-d", $value [on_time] ) . "</td>
</tr>";
}
$contents .= "</table>";
header ( 'Content-type: application/vnd.ms-execl' );
header ( 'Content-Disposition: attachment; filename=' . $filename );
echo $contents;
die ();
}
二、使用PHPExcel版本,功能很强大,这里只贴出导出excel部分,导入的有空在贴。
excel表的标题栏也在里面,没有样式。($indexKey一维数组;$list二维数组)
///////////////////////////////////////////////////////////////////////////////////
/*
* 导出excel,报名乡贤的表单 -xzz1130
*/
$filename = '第三届***报名名单';
// $indexKey = array('编号','用户名','性别','年龄');
// $list = array(array('编号'=>1,'用户名'=>'YQJ','性别'=>'男','年龄'=>24));
$indexKey = array('id','username','sex','age');
$list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>'22564351324564432333333'),array('id'=>2,'username'=>'KKL','sex'=>'女','age'=>'252342341312300123123'));
$indexKey2 = array('id'=>'编号','username'=>'用户名','sex'=>'性别','age'=>'年龄'); //标题栏
array_unshift($list, $indexKey2); //合并标题栏和数据,并将标题栏放在数据的最前面(这样导出的Excel才有标题)
exportExcel($list, $filename, $indexKey); ///////////////////////////////////////////////////////////////
// // //给导出的数据强行添加序号1、2、3...100000 // // // //
// $filename = '第三届乡贤论坛暨第五届全国爱故乡大会报名名单';
// $indexKey = array('xuhao','id','username','sex','age','amount');
// $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>'22564351324564432333333','amount'=>'232323222.65'),array('id'=>5,'username'=>'KKL','sex'=>'女','age'=>'252342341312300123123','amount'=>'1599222.68'));
// //给导出的数据强行添加序号1、2、3...100000
// foreach($list as $k=>$v){
// $list[$k]['xuhao'] = $k+1;
// }
// $indexKey2 = array('xuhao'=>'序号','id'=>'编号','username'=>'用户名','sex'=>'性别','age'=>'年龄','amount'=>'金额'); //标题栏
// array_unshift($list, $indexKey2); //合并标题栏和数据,并将标题栏放在数据的最前面(这样导出的Excel才有标题)
// exportExcel($list, $filename, $indexKey);
///////////////////////////////////////////////////////////////// //封装的导出Excel的方法
/**
* 创建(导出)Excel数据表格
* @param array $list 要导出的数组格式的数据
* @param string $filename 导出的Excel表格数据表的文件名
* @param array $indexKey $list数组中与Excel表格表头$header中每个项目对应的字段的名字(key值)
* @param array $startRow 第一条数据在Excel表格中起始行
* @param [bool] $excel2007 是否生成Excel2007(.xlsx)以上兼容的数据表
* 比如: $indexKey与$list数组对应关系如下:
* $indexKey = array('id','username','sex','age');
* $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24));
*/
function exportExcel($list,$filename,$indexKey,$startRow=1,$excel2007=false){
//文件引入
header('Content-type: text/html; charset=utf-8');
require_once './lib/excel/PHPExcel.php';
require_once './lib/excel/PHPExcel/Writer/Excel2007.php'; //TP3.2.X系统,使用vendor引入
//vendor('PHPExcel.PHPExcel');
//vendor('PHPExcel.PHPExcel.Writer.Excel2007'); if(empty($filename)) $filename = time();
if( !is_array($indexKey)) return false; $header_arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
//初始化PHPExcel()
$objPHPExcel = new PHPExcel(); //设置保存版本格式
if($excel2007){
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$filename = $filename.'.xlsx';
}else{
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$filename = $filename.'.xls';
} //接下来就是写数据到表格里面去
$objActSheet = $objPHPExcel->getActiveSheet();
//$startRow = 1;
foreach ($list as $row) {
foreach ($indexKey as $key => $value){
//这里是设置单元格的内容
$objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]);
}
$startRow++;
} // 下载这个表格,在浏览器输出
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename='.$filename.'');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
} ------------ 再次,导入excel (需要使用phpexcel插件,同样适用于oneThink) 2018/05/17 新增 ---------------- 转载至 : https://blog.csdn.net/yssong1028/article/details/75913317 强烈建议 去上面那个链接 查看,超级详细,超级简单的示例,广大PHPer的福音 !!! 核心: <?php
namespace Home\Controller;
use Think\Controller;
use PHPExcel_IOFactory;
use PHPExcel;
use Behavior;
class IndexController extends Controller {
public function index(){
$this->display();
}
public function upload() {
ini_set('memory_limit','1024M');
if (!empty($_FILES)) {
$config = array(
'exts' => array('xlsx','xls'),
'maxSize' => 3145728000,
'rootPath' =>"./Public/",
'savePath' => 'Uploads/',
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);
if (!$info = $upload->upload()) {
$this->error($upload->getError());
}
vendor("PHPExcel.PHPExcel");
$file_name=$upload->rootPath.$info['photo']['savepath'].$info['photo']['savename'];
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));//判断导入表格后缀格式
if ($extension == 'xlsx') {
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
} else if ($extension == 'xls'){
$objReader =\PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
}
$sheet =$objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();//取得总行数
$highestColumn =$sheet->getHighestColumn(); //取得总列数
D('pro_info')->execute('truncate table pro_info');
for ($i = 2; $i <= $highestRow; $i++) {
//看这里看这里,前面小写的a是表中的字段名,后面的大写A是excel中位置
$data['pId'] =$objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();
$data['pName'] =$objPHPExcel->getActiveSheet()->getCell("B" .$i)->getValue();
$data['pPrice'] =$objPHPExcel->getActiveSheet()->getCell("C" .$i)->getValue();
$data['pCount'] = $objPHPExcel->getActiveSheet()->getCell("D". $i)->getValue();
//看这里看这里,这个位置写数据库中的表名 D('pro_info')->add($data);
}
$this->success('导入成功!');
} else {
$this->error("请选择上传的文件");
}
}
}
亲测有效,大功告成!!, 同样支持中文输入,不乱码!!!
【PHP】导入、导出Excel表格(有使用PHPExcel和不使用的两个版本)的更多相关文章
- PHP导入导出excel表格图片(转)
写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...
- PHP导入导出excel表格图片的代码和方法大全
基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...
- Java代码导入导出 Excel 表格最简单的方法
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...
- Java IO 导入导出Excel表格
1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...
- Java利用POI实现导入导出Excel表格示例代码
转自:https://www.jb51.net/article/95526.htm 介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其 ...
- phpexcel 导入导出excel表格
phpexcel中文实用手册 转载:http://www.cnblogs.com/freespider/p/3284828.html 下面是总结的几个使用方法 include 'PHPExcel.ph ...
- JS导入导出Excel表格的方法
https://blog.csdn.net/aa122273328/article/details/50388673 导出 https://blog.csdn.net/qq_37281252/arti ...
- 使用PHPExcel导入导出excel格式文件
使用PHPExcel导入导出excel格式文件 作者:zccst 因为导出使用较多,以下是导出实现过程. 第一步,将PHPExcel的源码拷贝到项目的lib下 文件包含:PHPExcel.ph ...
- .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格
一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...
- 网页表格导入导出Excel
用JS实现网页表格数据导入导出excel. 首先是JS文件中的代码 (function($){ function getRows(target){ var state = $(target).data ...
随机推荐
- [ARC062F]Painting Graphs with AtCoDeer
题意:一个无向图,用$k$种不同的颜色给每条边染色,问能染出多少种不同的图,如果两张图能通过循环移位环边使得颜色相同,那么这两张图被认为是相同的 数学太差伤不起啊...补了一下Burnside定理的证 ...
- 20162303实验二 Java面向对象程序设计实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 石亚鑫 学号:20162303 成绩: 2分 指导教师:娄家鹏 王志强 实验日期:4月14日 实验密 ...
- win8 wamp 安装报错
可是安装wamp的时候(http://www.wampserver.com/en/#download-wrapper)下载的是64位的,刚开始报 错xxx.dll文件丢失,好吧我把那个xxx.dll文 ...
- (转)Linux下数据段的区别(数据段、代码段、堆栈段、BSS段)
进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的, ...
- PHP温故知新(一)
前言 开发PHP也有几年的时间了,记得第一次接触PHP那时候还是PHP4,现在PHP版本已经是7了,虽然本人也算是一个PHP老手了,但是总觉得有些基础知识掌握的不是很好.学PHP之初只是为了混口饭吃, ...
- NTP安全漏洞公告
NTP服务今天公告了几个高危漏洞,大概信息如下: 描述:包含缓冲区溢出等多个高危或低危漏洞. 危害:可以利用获取服务器权限完全控制服务器,至少可以造成服务器崩溃. 影响范围:只有升级到4.2. ...
- SQL 的四种分类 DDL,DML,DCL,TCL
DDL (数据定义问题) 数据定义语言 - Data Definition Language 用来定义数据库的对象,如数据表.视图.索引等DDL不需要commit.CREATEALTERDROPTRU ...
- 面经 | 我是如何通过校招拿到京东的Offer的
本文来自粉丝投稿,原作者:红鼻子熊. 版权归Hollis所有. OFFER:京东2018校招物流研发岗 个人:211小硕 面试时间:2017年秋天 整体:三轮面试,前两轮为技术面试,最后为hr面试 一 ...
- ylbtech-LanguageSamples-OperatorOverLoading(运算符重载)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-OperatorOverLoading(运算符重载) 1.A,示例(Sample) 返回 ...
- 从外部重置一个运行中consumer group的消费进度
对于0.10.1以上版本的kafka, 如何从外部重置一个运行中的consumer group的进度呢?比如有一个控制台,可以主动重置任意消费组的消费进度重置到12小时之前, 而用户的程序可以保持运行 ...