2.下载完后解压目录如下(classes文件夹是我们所需要的)
Classes目录
下是PHPExcel的源代码文件:
PHPExcel.php文件
是类库的接口,外部的PHP代码通过它来实现对PHPExcel的调用;
PHPExcel目录
下是各种不同文档(如Excel、Excel2007、PDF等)的读取和生成的具体操作代码,它们由Classes目录下的PHPExcel.php文件通过工厂模式统一进行调用。
Documentation目录
下是PHPExcel的官方帮助文档,尤其是
API目录
下网页文件全部是PHPExcel的API帮助文档,而其它的则是对这个开源项目的介绍。
Examples目录
下是PHPExcel的将近40个示例小程序,可以与Classes目录一同放到Apache+PHP环境下进行测试与学习。
3.把classes文件夹改名为PHPExcel放入项目的vendor目录下(PHPExcel类库就扩展完成了)
4.然后需要的时候使用vendor进行导入
导出数据示例:
* 接口描述:数据导出 index/index/outExcel
* @author 特伦不纯、
* @date 2022-10-11
public function outExcel(){
//1.清除缓冲区,避免乱码
//2.导入PHPExcel类库
//3.查询出数据库数据
//4.实例化PHPExcel对象
//5.设置sheet的名称,以及单元格字段信息
//6.设置内容
//7.通过PHPExcel_IOFactory的写函数将上面数据写出来
//8.设置表格文件的名称
//9.生成并下载表格
//====================================================
//1.清除缓冲区,避免乱码
ob_end_clean();
//2.导入PHPExcel类库
vendor("PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.IOFactory");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
//3.查询出数据库数据
$data = get_datalist('people');
//4.实例化PHPExcel对象
* 实例化之后的PHPExcel对象类似于一个暂存于内存中文档文件,
* 可以对它进行操作以达到修改文档数据的目的
$objPHPExcel = new \PHPExcel();//通过new关键字创建空白文档
$PHPWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);//用于2007版本格式
//5.设置sheet的名称,以及单元格字段信息
$objPHPExcel->getActiveSheet()->setTitle('test'); //获取当前的工作表并且设置工作表名称
$objPHPExcel->setActiveSheetIndex(0)//设置sheet(工作表)的起始位置为0
->setCellValue('A1', 'ID编号') //设置单元格字段信息
->setCellValue('B1', '商品名称')
->setCellValue('C1', '商品价钱');
//6.设置内容
$count = count($data); //计算有多少条数据
//设置内容 i=2表示从第二段开始设值
for ($i = 2; $i <= $count + 1; $i++) {
//填入数据详情是这样的 A2,data[0]['Id'];
// A3,data[1]['id']; 以此类推
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['Id']);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $data[$i - 2]['name']);
$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $data[$i - 2]['headimg']);
//7.通过PHPExcel_IOFactory的写函数将上面数据写出来
$PHPWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
//8.设置表格文件的名称
$outputFileName = 'total.xls';
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="' . $outputFileName . '"');
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
//9.生成并下载表格
$PHPWriter->save("php://output");
踩过的一些坑
-
错误代码:$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['id'])
-
正确代码:$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['Id'])
-
数据库中Id首字母为大写,我取出时写为小写则报错
使用vendor导入的对象实例化需要加"\"
例如:$objPHPExcel = new \PHPExcel();
导出数据加图片示例:
* 接口描述:数据导出(带图片) index/index/outExcel
* @author 特伦不纯、
* @date 2022-10-12
public function outExcel(){
//1.清除缓冲区,避免乱码
//2.导入PHPExcel类库
//3.查询出数据库数据
//4.实例化PHPExcel对象
//5.设置sheet的名称,以及单元格字段信息
//6.设置内容(在此处添加导入图片的代码)
//7.通过PHPExcel_IOFactory的写函数将上面数据写出来
//8.设置表格文件的名称
//9.生成并下载表格
//====================================================
//1.清除缓冲区,避免乱码
ob_end_clean();
//2.导入PHPExcel类库
vendor("PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.IOFactory");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
//3.查询出数据库数据
$data = get_datalist('people');
//4.实例化PHPExcel对象
$objPHPExcel = new \PHPExcel();
$xlsWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//用其他版本格式
//5.设置当前sheet和单元格信息
$objPHPExcel->getActiveSheet()->setTitle('test'); //设置sheet名称
$objActSheet=$objPHPExcel->setActiveSheetIndex(0)//设置sheet的起始位置为0
->setCellValue('A1', 'ID编号') //设置单元格字段信息
->setCellValue('B1', '姓名')
->setCellValue('C1', '图片');
// 设置C列单元格宽度为15(用来放置图片)
$objActSheet->getColumnDimension("C")->setWidth(15); // 列宽
//6.设置内容
$count = count($data); //计算有多少条数据
//设置内容 i=2表示从第二段开始设值
for ($i = 2; $i <= $count + 1; $i++) {
//填入数据详情是这样的 A2,data[0]['Id'];
// A3,data[1]['id']; 以此类推
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['Id']);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $data[$i - 2]['name']);
//$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $data[$i - 2]['headimg']);
//导入图片代码方法一:无法获取网络图片,只可导入本地图片!!!!!============
// $objDrawing = new \PHPExcel_Worksheet_Drawing();//图片生成
// //获取图片路径
// $objDrawing->setPath("本地图片路径");
// //设置宽度高度
// $objDrawing->setHeight(220);//照片高度
// $objDrawing->setWidth(220); //照片宽度
// // /*设置图片要插入的单元格*/
// $objDrawing->setCoordinates('C' . $i);
// // 图片偏移距离
// $objDrawing->setOffsetX(0);
// $objDrawing->setOffsetY(0);
// $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
//导入图片代码方法二 :可以导入网络图片========================
$objDrawing = new \PHPExcel_Worksheet_MemoryDrawing();
$imgPath = $data[$i - 2]['headimg'];//获取图片路径
// 截取图片的格式,用不同的方法
$end = substr($imgPath, -3);
if ($end == 'jpg' || $end == 'peg') {
$img = @imagecreatefromjpeg($imgPath);
}else if ($end == 'png') {
$img = @imagecreatefrompng($imgPath);
}else if ($end == 'gif') {
$img = @imagecreatefromgif($imgPath);
$objDrawing->setImageResource($img);//图片格式
$objDrawing->setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法
$objDrawing->setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(100);//照片高度
$objDrawing->setWidth(100); //照片宽度
$objDrawing->setCoordinates('C' . $i);//图片要插入的单元格
$objDrawing->setOffsetX(8);//图片X轴偏移
$objDrawing->setOffsetY(8);//图片Y轴偏移
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
//设置每一行高度
$objActSheet->getRowDimension($i)->setRowHeight(100); // 行高
//7.通过PHPExcel_IOFactory的写函数将上面数据写出来
$xlsWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
//8.设置表格文件的名称
$outputFileName = 'total.xls';
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="' . $outputFileName . '"');
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
//9.生成并下载表格
$xlsWriter->save("php://output");
附上PHPExcel一些常用的代码段:
// 通常PHPExcel对象有两种实例化的方式
// 1. 通过new关键字创建空白文档
$phpexcel = new PHPExcel();
// 2. 通过读取已有的模板创建
$phpexcel = PHPExcel_IOFactory::createReader("Excel5")->load("template.xls");
* 实例化之后的PHPExcel对象类似于一个暂存于内存中文档文件,
* 可以对它进行操作以达到修改文档数据的目的
// 设置文档属性
$phpexcel->getProperties()->setCreator("Liu Jian") // 文档作者
->setLastModifiedBy("Liu Jian") // 最后一次修改者
->setTitle("Office 2003 XLS Test Document") // 标题
->setSubject("Office 2003 XLS Test Document") // 主题
->setDescription("Test document for Office 2003 XLS, generated using PHPExcel.") // 备注
->setKeywords("office 2003 openxml php") // 关键字
->setCategory("Test result file"); // 类别
// 默认状态下,新创建的空白文档(通过new)只有一个工作表(sheet),且它的编号(index)为0
// 可以通过如下的方式添加新的工作表
$phpexcel->createSheet(1);
// 获取已有编号的工作表
$sheet = $phpexcel->getSheet(1);
// 设置当前激活的工作表编号
$phpexcel->setActiveSheetIndex(1);
// 获取当前激活的工作表
$sheet = $phpexcel->getActiveSheet();
// 得到工作表之后就可以操作它的单元格以修改数据了
// 修改工作表的名称
$sheet->setTitle("Test");
// 设置单元格A5的值
$sheet->setCellValue("A5", date('Y-m-d h:i:s'));
// 设置第3行第5列(E3)的值
$sheet->setCellValueByColumnAndRow(4, 3, date('Y-m-d h:i:s'));
// 获取单元格A5的值
$sheet->getCell("A5")->getValue();
// 合并单元格
$sheet->mergeCells("C3:G6");
// 拆分合并的单元格
$sheet->unmergeCells("C3:G6");
// 设置第3行的属性
$sheet->getRowDimension(3)->setRowHeight(100) // 行高
->setVisible(true) // 是否可见,默认为true
->setRowIndex(6) // 变更行号为6
->setOutlineLevel(5); // 优先级别,默认为0,参数必须是0到7
// 设置第F列的属性
// getColumnDimension("F")可以用getColumnDimensionByColumn(5)代替
$sheet->getColumnDimension("F")->setWidth(200) // 列宽
->setColumnIndex("I") // 变更列号为I
->setVisible(false) // 是否可见
->setAutoSize(true); // 自动适应列宽
// 在第3行前面插入1行,该行将变成新的第3行,其它的依次下移1行
$sheet->insertNewRowBefore(3, 1);
// 在第C行前面插入1列,该列将变成新的第C列,其它的依次右移1列
$sheet->insertNewColumnBefore("C", 1); // 方法一
$sheet->insertNewColumnBeforeByIndex(2, 1); // 方法二,第C列又是第2列
// 获取单元格D3的样式对象
$style = $sheet->getStyle("D3"); // 等价于getStyleByColumnAndRow(3, 3)
// 设置该单元格的字体属性
$style->getFont()->setBold(true) // 是否粗体
->setSize(16) // 字号
->setName("Gungsuh") // 字体名,只适用于外文字体
->setItalic(true) // 是否斜体
->setStrikethrough(true) // 是否有删除线
->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING) // 下划线类型
->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLUE); // 字体颜色
// 设置该单元格的背景填充属性
$style->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID) // 填充模式
->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW); // 背景颜色
// 设置该单元格中数字的格式
$style->getNumberFormat()->setFormatCode("0.00");
// 设置该单元格中文本对齐方式
$style->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER) // 水平方向
->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); // 垂直方向
$sheet->setCellValue("D3", "12.3456");
// 在本地保存文档
PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5')->save("output.xls");
// 输出文档到页面
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="test.xls"');
header('Cache-Control: max-age=0');
PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5')->save('php://output');
ThinkPhp
使用
PHP
_XLSXWriter 代替
PHPExcel
百万级数据单次
导出
本篇的内容也是基于这一篇的升级版【三种方法如下】1、直接保存文件到项目中2、浏览器弹框下载3、一行行写入,最后保存文件到项目中。
首先把
PHPExcel
的压缩包解压,将class文件拿出 放在 tp5 目录下 vendor ,重命名
PHPExcel
;如图所示:
vender->
PHPExcel
->Classes->…
html代码
<form action="{:url('admin/upimg/
excel
phone')}" method="post" enctype="multipart/form-data">
<input type="subm
ThinkPHP
官方的帖子感觉写的很含糊,还是借鉴了另外一篇博客http://home.51.com/love0221/diary/item/10053281.html,才跑成功了,其中出了一些小问题,也是通过各种百度才得以解决,分享如下:一、前期准备下载
PHPExcel
包,解压出
PHPExcel
文件夹和
PHPExcel
.
php
文件,放到/
ThinkPHP
/Extend/Vendor目录下可以在T...
PHPExcel
是一个
php
语言读取
导出
数据、导入生成
Excel
的类库,
使用
起来非常方便,但有时会遇到以些问题,比如
导出
的数据超时,内存溢出等。
下面我们来说说这些问题和解决办法。
PHPExcel
版本:@version 1.8.0, 2014-03-02
能遇到这样的问题一般都是因为数据量大导致
1.
PHPExcel
报错
报错提示:
'break' not ...
$fileName = "亚马逊品类数据".date('Y-m-d');
$fileType = 'xlsx';
$sql = "select a.sku,b.product_typename,c.category_status,a.gender,a.sales_status,a.user_name,s.shop_name from amazon_skulist a left join amazon_category b on a.category_id=b.id left join amazon_cat.
很变态,
图片
非要导入
excel
,这么大个,我只能1000条
导出
一次,很恶心。
导出
好多次,才全部倒出到
excel
. set_time_limit(0);
ini_set('memory_limit', '1024M');
$title = date('Ym',time());
//获取活动id
$aUserInfo= $c-
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
Thinkphp
5整合
excel
导入
导出
PHPExcel
导出
PHPExcel
导出
之前只做过简单的,这一次这个有些复杂的,包括单元格合并、字体的样式、边框线、单元格的背景色、单元格内容的自动换行。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.
//引入
PHPExcel
import("Org.Util.
PHPExcel
");
import("O...