Thinkphp5(tp5)整合PHPExcel,Excel操作示例

PHP 投稿 51200 0 评论

Thinkphp5(tp5)整合PHPExcel,Excel操作示例

Thinkphp5安装PHPExcel

网上很多版本都说要先从官网下载PHPExcel,然后放到vendor目录,这是TP5以前版本的用法。TP5版本直接可以使用composer安装:

composer require phpoffice/phpexcel

Thinkphp5使用PHPExcel包操作excel示例

use PHPExcel_IOFactory;
use PHPExcel;
use PHPExcel_Worksheet_MemoryDrawing;
use PHPExcel_Cell_DataType;
use PHPExcel_Style_Alignment;
use PHPExcel_Style_NumberFormat;

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

//设置文档属性
$objPHPExcel->getProperties()
        ->setCreator("web100.cc")
        ->setLastModifiedBy("web100.cc")
        ->setTitle("Office 2007 XLSX Test Document")
        ->setSubject("Office 2007 XLSX Test Document")
        ->setDescription("Test document generated using PHP classes.")
        ->setKeywords("office 2007 openxml php")
        ->setCategory("Test result file");
       
//设置当前活动的sheet
$objPHPExcel->setActiveSheetIndex(0);

//选定当前Sheet
$objActSheet = $objPHPExcel->11getActiveSheet();

//设置sheet名字
$objActSheet->setTitle('phpexcel demo');

//由PHPExcel根据传入内容自动判断单元格内容类型
$objActSheet->setCellValue('A1', "Firstname");
$objActSheet->setCellValue('B1', "Lastname");
$objActSheet->setCellValue('C1', "Phone");
$objActSheet->setCellValue('D1', "Fax");
$objActSheet->setCellValue('E1', "Address");
$objActSheet->setCellValue('F1', "ZIP");
$objActSheet->setCellValue('G1', "DATE");

//直接按坐标位置设置值
$objActSheet->setCellValueByColumnAndRow(0, 8, 'firstname');
$objActSheet->setCellValueByColumnAndRow(1, 8, 'lastname');

// 单元格填充值
$objActSheet->setCellValue('A2', "小风");
$objActSheet->setCellValue('B2', "wang");

//设置列宽
$objActSheet->getColumnDimension('C')->setWidth('20');

// 设置行高
$objActSheet->getRowDimension('9')->setRowHeight(20); //第9行,如果setRowHeight(-1),表示自适应

//设置默认行高
$objActSheet->getDefaultRowDimension()->setRowHeight(15);

// 设置自动换行
$objActSheet->getStyle('A4')->getAlignment()->setWrapText(true);  

// 设置字体
$objActSheet->getStyle('A1')->getFont()->setName('宋体');
// 字号
$objActSheet->getStyle('A1')->getFont()->setSize(12);
// 加粗
$objActSheet->getStyle('A1')->getFont()->setBold(true);

//说明:$objActSheet->getStyle('A1:G10'),可以通过这种方式来选择一片单元格!
// 设置单元格格式
$objActSheet->getCell('C2')->setValueExplicit('861391327543258', PHPExcel_Cell_DataType::TYPE_NUMERIC);

// 日期
$objActSheet->setCellValue('G2', '2008-12-31');
$objActSheet->getStyle('G2')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);

// 时间戳
$time = gmmktime(0,0,0,12,31,2008); // int(1230681600)
$objActSheet->setCellValue('G3', PHPExcel_Shared_Date::PHPToExcel($time));
$objActSheet->getStyle('G3')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);

// url
$objActSheet->setCellValue('G11', 'www.feishuai.vip');
$objActSheet->getCell('G11')->getHyperlink()->setUrl('http://www.feishuai.vip');

// 另一个sheet
$objActSheet->setCellValue('G12', 'sheetb');
$objActSheet->getCell('G12')->getHyperlink()->setUrl("sheet://'sheetb'!A1");

// 水平居上
$objActSheet->getStyle('A9:B9')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP);

// 单元格换行
$objActSheet->getStyle('G2:G3')->getAlignment()->setWrapText(true);

// 合并
$objActSheet->mergeCells('A18:E22');

// 隐藏D列
$objActSheet->getColumnDimension('D')->setVisible(false);

//
$objActSheet->getColumnDimension('E')->setOutlineLevel(1);
$objActSheet->getColumnDimension('E')->setVisible(false);
$objActSheet->getColumnDimension('F')->setOutlineLevel(1);
$objActSheet->getColumnDimension('F')->setVisible(false);
$objActSheet->getColumnDimension('F')->setCollapsed(true);

// 固定第一行
$objActSheet->freezePane('A2');

// 保护工作表
$objActSheet->getProtection()->setPassword('PHPExcel');
$objActSheet->getProtection()->setSheet(true);
$objActSheet->getProtection()->setSort(true);
$objActSheet->getProtection()->setInsertRows(true);
$objActSheet->getProtection()->setFormatCells(true);

//设置边框
$sharedStyle1 = new PHPExcel_Style();
$sharedStyle1->applyFromArray(array('borders' => array('left' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM))));
$objActSheet->setSharedStyle($sharedStyle1, "B1:B10");

// 创建一个新的工作表
$objWorksheet1 = $objPHPExcel->createSheet();
$objWorksheet1->setTitle('sheetb');

$objPHPExcel->setActiveSheetIndex(1);

// 创建一个图片
$gdImage = @imagecreatetruecolor(200, 20) or die('Cannot Initialize new GD image stream');
$textColor = imagecolorallocate($gdImage, 255, 255, 255);
imagestring($gdImage, 1, 5, 5,  'Created with PHPExcel (c1gstudio.com)', $textColor);

// 把创建的图片添加到工作表
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
$objDrawing->setName('Sample image');
$objDrawing->setDescription('Sample image');
$objDrawing->setImageResource($gdImage);
$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG);
$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(36);
$objDrawing->setWorksheet($objActSheet);

$objPHPExcel->setActiveSheetIndex(0);

// 保存
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('testexcel'.time().'.xls');

编程笔记 » Thinkphp5(tp5)整合PHPExcel,Excel操作示例

赞同 (44) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽