zoukankan      html  css  js  c++  java
  • 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();

  • 相关阅读:
    C#判断闰年
    C#计算时间,107653秒是几天几小时几分钟几秒?
    两个值交换,不使用第三个中间变量做缓存。实现方法
    element UI dialog 固定高度 且关闭时清空数据
    JS
    PHP
    element UI 上传文件成功后
    windows环境安装vue-cli及webpack并创建vueJs项目
    PHP
    mysql点滴记录 三 (基础操作)
  • 原文地址:https://www.cnblogs.com/potatog/p/10443513.html
Copyright © 2011-2022 走看看