think php excel,在thinkphp6中使用Excel
第一步:安装,使用composer安装扩展。composer require phpoffice/phpexcel
第二步:封装<?php
namespace ExcelService;
use think\Db;
use think\Exception;
use think\Loader;
use think\Log;
use PHPExcel_IOFactory;
use PHPExcel;
use PHPExcel_Worksheet_Drawing;
class ExcelService
{
/**
* TP5 Excel专用类库
* $excel=new Excel();
* $table_name="member"; // 数组则视为结果 字符串则视为表名
* $field=["id"=>"序号","guid"=>"项目代码","name"=>"项目名称"];
* $map=["status"=>1]; // 表名时 条件
* $map2=["status"=>-1]; // 表名时 条件
* $excel->setExcelName("下载装修项目")
* ->createSheet($table_name,$field,$map)
* ->createSheet($table_name,$field,$map2)
* ->downloadExcel();
*
*/
protected $objPHPExcel;
public $xlsReader;
public static $instance;
protected $sheetNum=0;
protected $error;
protected $columnWidth;
protected $rowHeight=20;
protected $excelName;
protected $sheetTitle;
protected $isLoad=false;
//如果你的字段列数超过26字母 会报错
protected $letterArray=["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"];
/**
* 项目初始化
* Excel constructor.
*/
public function __construct()
{
$this->objPHPExcel= new PHPExcel();
if(!$this->isLoad){
//新建时删除默认页面
$this->objPHPExcel->disconnectWorksheets();
}
}
/**
* 静态初始化方法
* Power: Mikkle
* Email:776329498@qq.com
* @return static
*/
public static function instance()
{
if (is_null(self::$instance)) {
self::$instance = new static();
}
return self::$instance;
}
/**
* Power: Mikkle
* Email:776329498@qq.com
* @param string $path
* @return static
* @throws Exception
* @throws \PHPExcel_Reader_Exception
*/
static public function loadExcel($path="/test.xls",$ext =''){
if (is_null(self::$instance)) {
self::$instance = new static();
}
$excel = self::$instance;
try {
try {
if ($ext == "csv") {
$xlsReader = \PHPExcel_IOFactory::createReader('CSV')->setDelimiter(',')->setEnclosure('"')->setSheetIndex(0);
$xlsReader->setReadDataOnly(true); //
$xlsReader->setLoadSheetsOnly(true);
$xlsReader->setInputEncoding('GBK');
$excel->xlsReader=$xlsReader->load($path);
}else{
$xlsReader = \PHPExcel_IOFactory::createReader("Excel2007");
$xlsReader->setReadDataOnly(true); //
$xlsReader->setLoadSheetsOnly(true);
$excel->xlsReader=$xlsReader->load($path);
}
} catch (Exception $e) {
$xlsReader = \PHPExcel_IOFactory::createReader("Excel5");
$xlsReader->setReadDataOnly(true); //
$xlsReader->setLoadSheetsOnly(true);
$excel->xlsReader=$xlsReader->load($path);
}
} catch (Exception $e) {
throw new Exception("读取EXCEL失败");
}
return $excel;
}
public function getSheetByName($name){
if (isset($this->xlsReader)){
return $this->xlsReader->getSheetByName($name);
}else{
return false;
}
}
public function getSheetNames(){
if (isset($this->xlsReader)){
return $this->xlsReader->getSheetNames();
}else{
return false;
}
}
/**
* Power: Mikkle
* Email:776329498@qq.com
* @return mixed
*/
public function getExcelObject(){
return $this->xlsReader;
}
public function getAllSheets(){
if (isset($this->xlsReader)){
return $this->xlsReader->getAllSheets();
}else{
return false;
}
}
public function getSheetCount(){
if (isset($this->xlsReader)){
return $this->xlsReader->getSheetCount();
}else{
return false;
}
}
public function getSheetArrayByIndex($index=0){
if (isset($this->xlsReader)){
return $this->xlsReader->getSheet($index)->toArray();
}else{
return false;
}
}
/**
* 设置下载的Excel名称
* Power: Mikkle
* Email:776329498@qq.com
* @param $name
* @return $this
*/
public function setExcelName($name){
$this->excelName=$name;
return $this;
}
public function setSheetTitle($name)
{
$this->sheetTitle=$name;
return $this;
}
public function getSheetTitle()
{
return $this->sheetTitle ? $this->sheetTitle : "";
}
/**
* 返回EXCEL名称
* Power: Mikkle
* Email:776329498@qq.com
* @return string
*/
public function getExcelName()
{
return $this->excelName ? $this->excelName : "新建的数据表格";
}
/**
* 创建
* @param string|array $table = string 的时候则为表名 = array 的时候 则为结果集
* @param array $field 要导出的字段
* @param array $map 查询参数
* @return this
*/
public function createSheet($table,$field=[],$map=[]){
if (empty($table) ||empty($field)|| !is_array($field)){
$this->error="生成Excel的[table]或[field]参数不正确";
throw new Exception("生成Excel的[table]或[field]参数不正确");
return $this;
}
$sheet_num = $this->getNewSheetNum();
$objPHPExcel=$this->objPHPExcel;
$objPHPExcel->createSheet($sheet_num);
$objPHPExcel->setActiveSheetIndex($sheet_num);
$sheet=$objPHPExcel->getActiveSheet();
if ($this->getSheetTitle()) {
$objPHPExcel->getActiveSheet()->setTitle($this->getSheetTitle());
}
//设置默认行高
$sheet->getDefaultRowDimension()->setRowHeight($this->rowHeight);
$titleStyleArray = [
'font' => [
'bold' => true
],
'alignment' => [
'horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER
]
];
$field_title=array_values($field);
$letter_array = $this->letterArray;
foreach($field_title as $item=>$value){
if(isset($this->columnWidth)){
if(is_array($this->columnWidth) && count($field)==count($this->columnWidth)){
$sheet->getColumnDimension($letter_array[$item])->setWidth($this->columnWidth[$item]);
}elseif(is_integer($this->columnWidth)){
$sheet->getColumnDimension($letter_array[$item])->setWidth($this->columnWidth);
}else{
$sheet->getColumnDimension($letter_array[$item])->setAutoSize(true);
}
}else{
$sheet->getColumnDimension($letter_array[$item])->setAutoSize(true);
}
//标题加粗
$sheet->getStyle($letter_array[$item]."1")->getFont()->setBold(true);
$sheet->setCellValue($letter_array[$item]."1",$value);
}
// p($table);
if (is_string($table)) {
$list = Db::table($table)->field($field)->where($map)->select();
}else if(is_array($table)){
$list = $table;
}else{
throw new Exception("Table错误:支持数组或数据表名称");
return $this;
}
if ($list){
foreach($list as $item=>$value ){
$value=array_values($value);
foreach($value as $i=>$v){
$sheet->setCellValue($letter_array[$i].($item+2),$value[$i]);
}
}
}
$color='FFFF0000';
$width = count($field_title)+1;
$rows = count($list)+1;
//边框样式
$styleArray = [
'borders' => [
'allborders' => [
// 'style' => \PHPExcel_Style_Border::BORDER_THICK,//边框是粗的
'style' => \PHPExcel_Style_Border::BORDER_THIN,//细边框
// 'color' => array('argb' => $color),
],
],
];
$objPHPExcel->getActiveSheet()->getStyle("A1:{$this->letterArray[ $width ]}{$rows}")->applyFromArray($styleArray);
return $this;
}
/**
* 下载当前的EXCEL
* Power: Mikkle
* Email:776329498@qq.com
* @param string $save_name
* @throws \PHPExcel_Reader_Exception
*/
public function downloadExcel($save_name=""){
ob_start();
//最后通过浏览器输出
$save_name=$this->getExcelName();
$save_name = $save_name ? "$save_name.xls" : "导出信息.xls";
header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header("Content-Disposition: attachment;filename=$save_name");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel5');
$objWriter->save('php://output');
ob_end_flush();//输出全部内容到浏览器
die();
}
/**
* 保存当前的EXCEL
* Power: Mikkle
* Email:776329498@qq.com
* @param string $save_path
* @throws \PHPExcel_Reader_Exception
*/
public function saveExcel($save_path=""){
$objWriter = \PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel5');
$save_name=$this->getExcelName();
$save_name = $save_name ? "$save_name.xls" : "demo.xls";
$save_path=$save_path?$save_path:ROOT_PATH.'runtime/excel/'.$save_name;
if(!is_dir(dirname ($save_path))){
mkdir(dirname ($save_path),0755,true);
}
$objWriter->save($save_path);
die();
}
/**
* 获取新的Sheet编号
* Power: Mikkle
* Email:776329498@qq.com
* @return int
*/
protected function getNewSheetNum(){
$sheet_num=$this->sheetNum;
$this->sheetNum=$sheet_num+1;
return $sheet_num;
}
/**
* 设置行宽 未设置时候默认为自动
* Power: Mikkle
* Email:776329498@qq.com
* @param $width
* @return $this
*/
public function setColumnWidth($width){
if(is_integer($width)||is_array($width)){
$this->columnWidth=$width;
}
return $this;
}
/**
* 设置默认行高
* Power: Mikkle
* Email:776329498@qq.com
* @param $height
* @return $this
*/
public function setRowHeight($height){
if(is_numeric($height)){
$this->rowHeight=$height;
}
return $this;
}
/**
* 魔术方法 有不存在的操作的时候执行
* @access public
* @param string $method 方法名
* @param array $args 参数
* @return mixed
*/
public function __call($method, $args)
{
call_user_func_array([$this->objPHPExcel, $method], $args);
}
}
第三步:使用
1.导出数据到表格$excel=new ExcelService();
$table_name="mk_material_list_edit";
$field=["id"=>"序号","guid"=>"项目代码","name"=>"项目名称"];
$map=["status"=>1];
$map2=["status"=>-1];
$excel->setExcelName("下载装修项目")
->createSheet("装修项目",$table_name,$field,$map)
->createSheet("已删除装修项目",$table_name,$field,$map2)
->downloadExcel();
2.上传文件后导入数据,并解析数据结果$getExcelObject=Excel::loadExcel("test.xls");
$sheetName=$getExcelObject->getSheetNames();
dump($sheetName);
$sheet = $getExcelObject->getSheetByName($sheetName[0])->toArray();
dump($sheet);
think php excel,在thinkphp6中使用Excel相关推荐
- excel匹配_python中实现excel的高级筛选
一 Excel里的高级筛选功能,着实令人惊叹,VBA里实现起来也相对简单,就是手动操作的代码化,设置好三项参数,便可以随取随用,效果稳准快. 二 在python 中实现同样的目的,更为直白爽快,不信你 ...
- php自带excel,基于php中使用excel的简单介绍_PHP
在工作中需要处理多语言的翻译问题,翻译都是写在excel表格里面.为了处理方便我就保留中文和英文两列. 这样需要将这些数据从excel中取出来,然乎保存在excel的数组中,通过使用循环数组将相应的数 ...
- 计算机右键无法新建excel,右键新建中没有excel怎么删除_右键新建中没有excel怎么办...
[www.gpsvo.com--电脑安全] 在电脑中,想要点击鼠标右键新建一个excel表格时,却没有这个程序,怎么办?下面随小编一起来看看吧. 右键新建中没有excel的解决方法1 同时按下wind ...
- vue 导入excel解析_VUE中导入excel文件
实现的效果如下图 安装依赖 npm install xlsx --save 引入 import XLSX from 'xlsx' Vue.prototype.XLSX = XLSX 结构 v-mode ...
- java 向word中添加excel附件并向excel单元格中加入图片并压缩图片并根据图片动态控制单元格高度宽度
word中加入excel附件 excel单元格中插入图片 word freemarker Excel poi 制作, jxl 插入图片 压缩图片/宽高,动态控制单元格高度与宽度 1.word 需要模板 ...
- 清华大学赵志磊--基于thinkPHP6框架的Excel表格导入和导出
1.Excel表格导出 先上大图:(可放大查看,当作壁纸再好不过,超高清壁纸) 正题: 首先.thinkPHP6框架内在admin应用下,自定义文件夹,存放公共类,里面封装公共方法. 命名空间写好,记 ...
- Excel VBA参考文献中人名与年份格式转换
一.用途 将Excel中含有人名与年份的字符串转换为指定格式.要求输入格式中作者的姓必须大于1个字符,名必须为1个字符. [案例]某不规则的参考文献字符串 Wang, H X, Ng, T B, 20 ...
- R语言使用broom包将回归模型(线性回归、逻辑回归、比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集
R语言使用broom包将回归模型(线性回归.逻辑回归.比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集 目录
- python中读写excel的扩展库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...
常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...
最新文章
- mysql单列索引和多列索引_mysql 单列索引与多列索引
- 2012_01_26
- TouTiao开源项目 分析笔记10 实现通用普通文章片段页面
- HTML引入JS、CSS的各种方法
- WEB Service 下实现大数据量的传输
- POJ 3553 Light Switching Game 博弈论 nim积 sg函数
- android 8.0应用内安装包,Android 8.0 下载安装进入【安装未知应用】页面,两步简化一步...
- CString 类型和引用
- hive partition 分区详解一
- oauth2授权码模式——微信第三方登录原理
- 【小米盒子3】刷机Android TV+电视家做极简电视
- python的计算_python计算smoothed PSSM(二)
- python中oserror_[python] 解决OSError: Address already in use
- 官方文档-Linux服务器集群系统(一)
- R语者小case之——从KEGG原始网页批量生成通路的基因表格
- Java回炉学习(三)
- oracle异地接管,群集的接管和故障恢复 - 
Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.6.0...
- 如何评估项目的开发时间
- python36.dll 0xc000005_使用python运行时出现0xc000005错误
- 记录设计模式之抽象工厂模式
热门文章
- ubuntu18找不到wifi适配器
- golang.org/x/lint安装失败
- mysql 连接失败的日志(或者输出)结果分析
- Elipse 、Idea配置 Java-Code-Formatter
- 双向链表的增、删、查、改、python实现,超详细讲解
- Mac如何设置Vamare Fusion虚拟集的vmnet-8网卡
- 在DataTable和DataView中查找指定记录
- 将下载都是大写字母的网页里面的html转换为小写的简单方式
- [机器学习-Sklearn]函数sklearn.feature_extraction.DictVectorizer理解与总结
- python2.7安装教程选哪个版本运行ride_RobotFramework-RIDE环境搭建二:Robot Framework-RIDE安装过程以及踩雷点...