PHPExcel 使用笔记

∥☆過路亽.° 提交于 2019-12-04 13:32:45
<?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);

//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);


/**
 * 排版
 */
//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();

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!