欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php使用phpoffice/phpspreadsheet拓展操作excel實例

 更新時間:2023年11月07日 11:02:32   作者:huaweichenai  
這篇文章主要為大家介紹了php使用phpoffice/phpspreadsheet拓展操作excel實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一:安裝phpoffice/phpspreadsheet

composer require phpoffice/phpspreadsheet

二:phpoffice/phpspreadsheet API接口詳解

PhpSpreadsheet提供了豐富的API接口,可以設置諸多單元格以及文檔屬性,包括樣式、圖片、日期、函數等等諸多應用,總之你想要什么樣的Excel表格,PhpSpreadsheet都能做到

在使用phpoffice/phpspreadsheet的API接口前,確保引入了正確的文件并實例化

use PhpOffice\PhpSpreadsheet\Spreadsheet;//引入文件
$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();//創(chuàng)建一個新的excel文檔
$sheet = $spreadsheet->getActiveSheet();//獲取當前操作sheet的對象

1:設置字體:

$sheet->getStyle('A7:B7')->getFont()->setBold(true)->setName('Arial')
            ->setSize(10);//將A7至B7兩單元格設置為粗體字,Arial字體,10號字
$sheet->getStyle('B1')->getFont()->setBold(true);//將B1單元格設置為粗體字

2:設置顏色

$sheet->getStyle('A1')->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);//將A1單元格文字顏色設為紅色

3:設置列寬

$sheet->getColumnDimension('A')->setWidth(20);//將A列的寬度設為20(字符)
$sheet->getColumnDimension('B')->setAutoSize(true);//將B列的寬度設為自動寬度
$sheet->getDefaultColumnDimension()->setWidth(12);//設置默認列寬為12

4:設置行高

$sheet->getRowDimension('10')->setRowHeight(100);//將第十行的高度設為100pt
$sheet->getDefaultRowDimension()->setRowHeight(15);//設置默認行高為15

5 : 對齊

$sheet->getStyle('A:D')->getAlignment()
            ->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER) //設置垂直居中
            ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER) //設置水平居中
            ->setWrapText(true); //設置自動換行

6:合并單元格

$sheet->mergeCells('A1:D2');//A1到D2合并為一個單元格

7:將合并后的單元格拆分

$sheet->unmergeCells('A1:D2');//將合并后的單元格拆分。

8:使用applyFromArray實現單元格樣式設置

//樣式變量
$style = [
//設置字體樣式
'font' => [
        'name' => 'Arial',
        'bold' => true,
        'italic' => false,
        'underline' => Font::UNDERLINE_DOUBLE,
        'strikethrough' => false,
        'color' => [
            'rgb' => '808080'
        ]
    ],
//設置邊框線樣式
'borders' => [
         //allBorders所有的邊框線樣式
         //左邊框線
       'bottom' => [
           'borderStyle' => Border::BORDER_DASHDOT,
           'color' => [
              'rgb' => '808080'
            ]
       ],
         //上邊框線
       'top' => [
           'borderStyle' => Border::BORDER_DASHDOT,
           'color' => [
               'rgb' => '808080'
           ]
       ]
],
//對齊樣式
'alignment' => [
   'horizontal' => Alignment::HORIZONTAL_CENTER,
   'vertical' => Alignment::VERTICAL_CENTER,
   'wrapText' => true,
],
//是否使用前綴
'quotePrefix'    => true
];
$sheet->getStyle('A1:D1')->applyFromArray($style);

9:設置工作表標題

$sheet->setTitle('Hello');;//設置當前工作表標題。

10:設置單元格的格式

$sheet->getStyle('D2')->getNumberFormat()
            ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);//將D2單元格的格式設為文本格式
$sheet->getStyle('A1:D2')->getNumberFormat()
            ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);//將A1到D2的單元格設置為文本格式

11 : 換行

$sheet->getCell('A4')->setValue("hello\nworld");//將A4單元格的hello和world換行

12:超鏈接

//將A2單元格內容設置blog并點擊跳轉https://www.wj0511.com
$sheet->setCellValue('A2', 'blog');
$sheet->getCell('A2')->getHyperlink()->setUrl('https://www.wj0511.com');

13:使用函數

常用函數有:總和(SUM),最大數(MAX),最小數(MIN),平均值(AVERAGE)

$sheet->setCellValue('B5', '=SUM(B1:B4)');//將B5單元格的內容設為B1到B4的之和

14:設置文檔屬性

$spreadsheet->getProperties()
    ->setCreator("author")    //作者
    ->setLastModifiedBy("last-author") //最后修改者
    ->setTitle("title")  //標題
    ->setSubject("subject") //副標題
    ->setDescription("description")  //描述
    ->setKeywords("keywords") //關鍵字
    ->setCategory("category"); //分類

三:簡單實現生成excel(這里我下載使用的Yii框架自帶的下載方法)

<?php
/**
 * author: wangjian
 * date: 2019/7/15
 */
namespace app\controllers;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Yii;
use yii\web\Controller;
class ExcelController extends Controller
{
    /**
     * 數字轉字母 (類似于Excel列標)
     * @param Int $index 索引值
     * @param Int $start 字母起始值
     * @return String 返回字母
     */
    public function intToChr($index, $start = 65)
    {
        $str = '';
        if (floor($index / 26) > 0) {
            $str .= $this->intToChr(floor($index / 26)-1);
        }
        return $str . chr($index % 26 + $start);
    }
    public function actionIndex()
    {
        //頭信息
        $header = [
            '姓名',
            '性別',
            '學歷',
            '年齡',
            '身高',
        ];
        //內容
        $data = [
            [
                '小明',
                '男',
                '???,
                '18',
                '175'
            ],
            [
                '小紅',
                '女',
                '本科',
                '18',
                '155'
            ],
            [
                '小藍',
                '男',
                '???,
                '20',
                '170'
            ],
            [
                '張三',
                '男',
                '本科',
                '19',
                '165'
            ],
            [
                '李四',
                '男',
                '專科',
                '22',
                '175'
            ],
            [
                '王二',
                '男',
                '???,
                '25',
                '175'
            ],
            [
                '麻子',
                '男',
                '本科',
                '22',
                '180'
            ],
        ];
        $header = array_values($header);
        $data = array_values($data);
        //獲取列信息
        $column = []; //['A','B','C','D','E']
        foreach ($header as $k => $item) {
            $column[$k] = $this->intToChr($k);
        }
        //獲取初始列和最終列
        $firstColum = $column[0];
        $lastColum = $column[count($column) - 1];
        //獲取初始行和最終行
        $firstRow = 1;
        $lastRow = count($data) + 1;
        $row = 1;
        $spreadsheet = new Spreadsheet();//創(chuàng)建一個新的excel文檔
        $sheet = $spreadsheet->getActiveSheet();//獲取當前操作sheet的對象
        $sheet->setTitle('標題'); //設置標題
        $sheet->getStyle("{$firstColum}:{$lastColum}")->getAlignment()
            ->setVertical(Alignment::VERTICAL_CENTER) //設置垂直居中
            ->setHorizontal(Alignment::HORIZONTAL_CENTER) //設置水平居中
            ->setWrapText(true); //設置自動換行
        //設置寬度
        $sheet->getDefaultColumnDimension()->setWidth(20);
        $headerStyle = [
            'alignment' => [
                'horizontal' => Alignment::HORIZONTAL_CENTER,
            ],
            'font' => [
                'bold' => true,
                'size' => 14,
            ],
        ];
        $cellStyle = [
            'alignment' => [
                'horizontal' => Alignment::HORIZONTAL_CENTER,
            ],
            'borders' => [
                'allBorders' => [
                    'borderStyle' => Border::BORDER_THIN,
                    'color' => ['argb' => 'FF000000'],
                ]
            ],
            'font' => [
                'size' => 10,
            ],
        ];
        //將excel的單元格格式設為文本格式
        $sheet->getStyle("{$firstColum}{$firstRow}:{$lastColum}{$lastRow}")->getNumberFormat()
            ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);
        //設置頭信息樣式
        $sheet->getRowDimension($row)->setRowHeight(30);//設置行高
        $sheet->getStyle("{$firstColum}{$row}:{$lastColum}{$row}")->applyFromArray($headerStyle);
        //設置頭信息
        foreach ($header as $key => $item) {
            $sheet->setCellValue("{$column[$key]}{$row}", $item);
        }
        $row++;
        foreach ($data as $key => $model) {
            $sheet->getRowDimension($row)->setRowHeight(30);//設置行高
            $sheet->getStyle("{$firstColum}{$row}:{$lastColum}{$row}")->applyFromArray($cellStyle);
            $i = 0;
            foreach ($model as $value) {
                $sheet->setCellValue("{$column[$i]}{$row}", $value);
                $i++;
            }
            $row++;
        }
        $file = '表格' . '.xlsx';//保存地址
        $writer = new Xlsx($spreadsheet);
        $writer->save($file);//生成excel文件
        Yii::$app->response->sendFile($file, '下載的excel名稱.xlsx')->send();
    }
}

四:讀取excel文件

$title = [];//excel工作表標題
$info = [];//excel內容
$fileName = "表格.xlsx";
$spreadsheet = IOFactory::load($fileName);
//$worksheet = $spreadsheet->getActiveSheet();   //獲取當前文件內容
$sheetAllCount = $spreadsheet->getSheetCount(); // 工作表總數
for ($index = 0; $index < $sheetAllCount; $index++) {   //工作表標題
    $title[] = $spreadsheet->getSheet($index)->getTitle();
}
//讀取第一個工作表
$whatTable = 0;
$sheet = $spreadsheet->getSheet($whatTable);
$highest_row = $sheet->getHighestRow(); // 取得總行數
$highest_column = $sheet->getHighestColumn(); ///取得列數  字母abc...
$highestColumnIndex = Coordinate::columnIndexFromString($highest_column);  //轉化為數字;
for ($i = 1; $i <= $highestColumnIndex; $i++) {
    for ($j = 1; $j <= $highest_row; $j++) {
        $conent = $sheet->getCellByColumnAndRow($i, $j)->getCalculatedValue();
        $info[$j][$i] = $conent;
    }
}
var_dump($info);

參考:https://phpspreadsheet.readth...

以上就是php使用phpoffice/phpspreadsheet拓展操作excel實例的詳細內容,更多關于phpoffice/phpspreadsheet操作excel的資料請關注腳本之家其它相關文章!

相關文章

  • PHP Smarty模版簡單使用方法

    PHP Smarty模版簡單使用方法

    這篇文章主要介紹了PHP Smarty模版簡單使用方法,結合實例形式分析了PHP調用Smarty模板的配置,變量設置及使用方法,需要的朋友可以參考下
    2016-03-03
  • php文件上傳類的分享

    php文件上傳類的分享

    這篇文章主要為大家分享了php文件上傳類的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • ThinkPHP模板判斷輸出Empty標簽用法詳解

    ThinkPHP模板判斷輸出Empty標簽用法詳解

    這篇文章主要介紹了ThinkPHP模板判斷輸出Empty標簽用法,需要的朋友可以參考下
    2014-06-06
  • PHP實現隨機數字、字母的驗證碼功能

    PHP實現隨機數字、字母的驗證碼功能

    本文通過實例代碼給大家介紹了PHP實現隨機數字、字母的驗證碼功能,代碼簡單易懂,非常不錯,具有一定得參考借鑒價值,需要得朋友參考下吧
    2018-08-08
  • 免費手機號碼歸屬地API查詢接口和PHP使用實例分享

    免費手機號碼歸屬地API查詢接口和PHP使用實例分享

    最近在做全國性的行業(yè)分類信息網站,需要用到手機號歸屬地顯示功能,于是就穿梭于各大權威站點之間偷來了API的接口地址。 分享出來,大家可以用到就拿去呵
    2014-04-04
  • Yii快速入門經典教程

    Yii快速入門經典教程

    這篇文章主要介紹了Yii快速入門經典教程,結合實例形式較為詳細的分析了Yii開發(fā)的基本概念,原理,使用技巧與相關注意事項,需要的朋友可以參考下
    2015-12-12
  • Laravel框架中緩存的使用方法分析

    Laravel框架中緩存的使用方法分析

    這篇文章主要介紹了Laravel框架中緩存的使用方法,結合具體實例形式分析了Laravel框架中緩存的常用方法、操作步驟及相關使用操作技巧,需要的朋友可以參考下
    2019-09-09
  • Laravel框架模板加載,分配變量及簡單路由功能示例

    Laravel框架模板加載,分配變量及簡單路由功能示例

    這篇文章主要介紹了Laravel框架模板加載,分配變量及簡單路由功能,結合實例形式分析了Laravel框架模板加載,分配變量及簡單路由功能相關原理、操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • php 驗證碼實例代碼

    php 驗證碼實例代碼

    首先驗證碼的原理就是,畫一張圖片,然后在這張圖片上寫一些字,然后加一些干擾的線條,像素點之類的東西就ok了,這里要使用php那就要知道php中畫圖的函數是那些,然后拿來用便是了。
    2010-06-06
  • php根據日期判斷星座的函數分享

    php根據日期判斷星座的函數分享

    下面提供一個用PHP來判斷指定一日期屬于哪個星座的函數,需要的朋友可以參考下
    2014-02-02

最新評論