PHPExcel 使用笔记

<?php

/**
 
 https://blog.csdn.net/qq_39647045/article/details/82385736
 
 
 */

/**
 * 简单的数据输入
 */

//引入核心文件
require_once dirname(__FILE__)."/PHPExcel/Classes/PHPExcel.php";

//创建数据对象
$objPHPExcel = new PHPExcel();
//如果是要用某个Excel模板那么久使用该方法来创建数据对象
// $objPHPExcel = PHPExcel_IOFactory::load("a.xlsx");
/**
 * 文档属性设置
 */
// Set document properties 设置文档属性
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");


/**
 * 单元格操作
 */

//1.填充数据到单元格
$col = "A";
//切换到第0个sheet 设置第0个sheet为当前活动sheet
$objPHPExcel->setActiveSheetIndex(0)
// Add some data 为单元格录入数据
->setCellValue("{$col}1", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法
->setCellValue("{$col}2", 'HELLO')
->setCellValue("{$col}3", 'world!')
->setCellValue("{$col}4", '我是中文')
->setCellValue("{$col}5", 'world!')
->setCellValue("{$col}6", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法
->setCellValue("{$col}7", 'HELLO');

//设置数据的同时指定数据的类型
$objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicit("{$col}8", "123456789123456789", PHPExcel_Cell_DataType::TYPE_STRING);

//如果要为单元格设置数字货币格式,如60€
$objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicit("{$col}9", "60.00€");
//1.填充数据到单元格 $col = "B"; //切换到第0个sheet 设置第0个sheet为当前活动sheet $objPHPExcel->setActiveSheetIndex(0) // Add some data 为单元格录入数据 ->setCellValue("{$col}1", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法 ->setCellValue("{$col}2", 'HELLO') ->setCellValue("{$col}3", 'world!') ->setCellValue("{$col}4", '我是中文') ->setCellValue("{$col}5", 'world!') ->setCellValue("{$col}6", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法 ->setCellValue("{$col}7", 'HELLO'); //1.填充数据到单元格 $col = "C"; //切换到第0个sheet 设置第0个sheet为当前活动sheet $objPHPExcel->setActiveSheetIndex(0) // Add some data 为单元格录入数据 ->setCellValue("{$col}1", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法 ->setCellValue("{$col}2", 'HELLO') ->setCellValue("{$col}3", 'world!') ->setCellValue("{$col}4", '我是中文') ->setCellValue("{$col}5", 'world!') ->setCellValue("{$col}6", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法 ->setCellValue("{$col}7", 'HELLO'); //2.单元格填充样式 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY); //3.单元格填充颜色 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('FF7F24'); //4.设置单元格行默认高度 如果同时要与【5.设置行高】使用 那么该操作放在前面 $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); //5.设置单元格行默认高度 如果同时要与【4.设置列宽】 使用 那么该操作放在前面 $objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(20); //6.设置列宽 $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(40); //7.设置行高 $objPHPExcel->getActiveSheet()->getRowDimension('9')->setRowHeight(40); //8 合并单元格 $objPHPExcel->getActiveSheet()->mergeCells('C10:D20'); //合并后用第一个单元格定位 $objPHPExcel->getActiveSheet()->setCellValue("C10", '合并后按照第一个单元格坐标操作'); //9.单元格边框 $styleArray = array( 'borders' => array( //表示所有单元格的四周 'allborders' => array( 'style' => PHPExcel_Style_Border::BORDER_THICK,//粗 边框 // 'style' => PHPExcel_Style_Border::BORDER_THIN,//细 边框 'color' => array('argb' => 'FFFF0000'),//边框颜色 ), ), ); $objPHPExcel->getActiveSheet()->getStyle('F10:G15')->applyFromArray($styleArray);
//10.单元格自动换行 $objPHPExcel->getActiveSheet()->getStyle("A1")->getAlignment()->setWrapText(true);

/** * 排版 */ //1.垂直对其方式 $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //2.水平对其方式 $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //3.冻结窗口 B2为最左上角能动的第一个单元格 $objPHPExcel->getActiveSheet()->freezePane("B2"); /** * 字体样式 */ //1.单元格文字颜色 $objPHPExcel->getActiveSheet()->getStyle('C2')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); //2.字体加粗 $objPHPExcel->getActiveSheet()->getStyle('C2')->getFont()->setBold(true); //3.字体大小 $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(5); /** * 插入图片 */ $pic_path = "demo.png"; $objDrawing = new PHPExcel_Worksheet_Drawing(); $objDrawing->setName('图片'); $objDrawing->setDescription('图片'); //得到图片 $objDrawing->setPath($pic_path); //设置图片的高度,只设置高度,宽度自动等比缩放 $objDrawing->setHeight(200); //设置图片宽度目前测试到没有效果 // $objDrawing->setWidth(40); //图片的左上角与指定单元格的左上角对齐 $objDrawing->setCoordinates('I9'); //指定将图片添加到哪个sheet 示例为当前sheet $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); /** * sheet名称 */ //设置当前sheet的名字 $objPHPExcel->getActiveSheet()->setTitle('Simple'); //新增另一个sheet $col = "A"; $objPHPExcel->createSheet(1); $objPHPExcel->setActiveSheetIndex(1) // Add some data 为单元格录入数据 ->setCellValue("{$col}1", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法 ->setCellValue("{$col}2", 'HELLO') ->setCellValue("{$col}3", 'world!') ->setCellValue("{$col}4", '我是中文') ->setCellValue("{$col}5", 'world!') ->setCellValue("{$col}6", "123456789123456789")//如果不加引号 则会是数字格式,过长会变成科学计数法 ->setCellValue("{$col}7", 'HELLO'); //把当前sheet设置到第一个sheet $objPHPExcel->setActiveSheetIndex(0); //Redirect output to a client’s web browser (Excel2007) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); //文件的下载名称 header('Content-Disposition: attachment;filename="如果我是中文呢.xlsx"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); //或者将Excel存储到文件 /* $filename = "a.xlsx"; $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $writer->save($filename); */ exit;

读取excel中的数据:

$PHPExcel = PHPExcel_IOFactory::load($excelPath);

如果是tp5要使用PHPExcel那么需要将 PHPExcel文件放到vendor目录下,

然后再需要使用的地方

//首先去人要读取的sheet

$sheet = $PHPExcel->getSheet(0);

//读取该sheet中的总行数
$highestRow = $sheet->getHighestRow();

//读取总列数
 $highestColumm = $sheet->getHighestColumn();

原文地址:https://www.cnblogs.com/potatog/p/10443513.html