phpspreadsheet 中文文檔 粗翻版

2019年10月11日09:32:33php

官方使用文檔  https://phpspreadsheet.readthedocs.io/en/stable/topics/accessing-cells/html

api文檔 https://phpoffice.github.io/PhpSpreadsheet/master/PhpOffice.htmlhtml5

翻譯的是使用文檔,機翻+校驗,由於如今單個文檔內容放的東西有限分紅幾篇文章git

只翻譯標題的主要部分github

phpspreadsheet 中文文檔(一) 訪問單元格                      未校驗

phpspreadsheet 中文文檔(二) 結構+自動篩選                未校驗

phpspreadsheet 中文文檔(三) 計算引擎                         未校驗

phpspreadsheet 中文文檔(四) 建立電子表格+檔案格式    未校驗

phpspreadsheet 中文文檔(五)節約內存+PHPExcel遷移      未校驗

phpspreadsheet 中文文檔(六)讀寫文件+讀取文件           未校驗

phpspreadsheet 中文文檔(七)技巧和訣竅                   未校驗

phpspreadsheet 中文文檔(八)讀寫文件+讀取文件        未校驗

 

文檔部分主要的菜單↓↓web

Accessing cells                                     訪問單元格                                             
  Setting a cell value by coordinate              經過座標設置單元格值
  Excel DataTypes Excel                           數據類型
  Setting a range of cells from an array          設置數組中的單元格範圍
  Retrieving a cell value by coordinate           經過座標檢索單元格值
  Setting a cell value by column and row          按列和行設置單元格值
  Retrieving a cell value by column and row       按列和行檢索單元格值
  Retrieving a range of cell values to an array   檢索單元格值範圍到數組
  Looping through cells                           遍歷單元格
  Using value binders to facilitate data entry    使用值綁定器簡化數據輸入
Architecture                                        結構
  Architecture                                    結構
  Schematical                                     示意圖
  AutoLoader                                      自動加載器
  Spreadsheet in memory                           表格在內存中使用
  Readers and writers                             讀取器和寫入器
  Fluent interfaces                               優美的接口
AutoFilter Reference                                自動篩選引用
  Introduction                                    簡介
  Setting an AutoFilter area on a worksheet       在工做表上設置自動篩選區域
  Autofilter Expressions                          自動篩選表達式
  Executing an AutoFilter                         執行自動篩選
  AutoFilter Sorting                              自動篩選排序
Calculation Engine                                  計算引擎
  Using the PhpSpreadsheet calculation engine     使用phpspreadsheet計算引擎
  Calculation Cache                               計算緩存
  Known limitations                               已知限制
  Handling Date and Time Values                   處理日期和時間值
  Function Reference                              函數引用
Creating a spreadsheet                              建立電子表格
  The Spreadsheet class                           Spreadsheet類
  Clearing a Workbook from memory                 從內存中清除工做簿
File Formats                                        文件格式
  Xls
  Xml
  Xlsx
  Ods
  Slk
  Gnumeric
  Csv
  Html
Memory saving                                       節約內存
    Beware of TTL                                   注意TTL使用
    Common use cases                                常見用例
Migration from PHPExcel                             從PHPExcel遷移
  Automated tool                                  自動化工具
  Manual changes                                  須要手動更改
Reading and writing to file                         讀寫文件
  \PhpOffice\PhpSpreadsheet\IOFactory             IOFactory類
  Excel 2007 (SpreadsheetML) file format          Excel 2007 文件格式
  Excel 5 (BIFF) file format                      Excel 5 文件格式
  Excel 2003 XML file format                      Excel 2003 文件格式
  Symbolic LinK (SYLK)                            符號連接(Sylk)
  Open/Libre Office (.ods)
  CSV (Comma Separated Values)
  HTML
  PDF
  Generating Excel files from templates (read, modify, write)     從模板生成Excel文件(讀取,修改,寫入)
  Generating Excel files from HTML content                        從HTML內容生成Excel文件
Reading Files                                       讀取文件
  Security                                         安全問題
  Loading a Spreadsheet File                       加載電子表格文件
  Creating a Reader and Loading a Spreadsheet File    建立閱讀器並加載電子表格文件
  Spreadsheet Reader Options                      電子表格閱讀器選項
  Error Handling                                  錯誤處理
  Helper Methods                                  輔助方法
Recipes                                             技巧和訣竅demo
  Setting a spreadsheet's metadata                設置電子表格的元數據
  Setting a spreadsheet's active sheet            設置電子表格的活動工做表
  Write a date or time into a cell                將日期或時間寫入單元格
  Write a formula into a cell                     將公式寫入單元格
  Locale Settings for Formulae                    公式的區域設置
  Write a newline character "\n" in a cell (ALT+"Enter")          在單元格中寫入換行符「 \ n」
  Explicitly set a cell's datatype                明確設置單元格的數據類型
  Change a cell into a clickable URL              將單元格更改成可點擊的網址
  Setting Printer Options for Excel files         設置Excel文件的打印機選項
  Styles                                          樣式設置
  Conditional formatting a cell                   有條件地格式化單元格
  Add a comment to a cell                         在單元格中添加評論
  Apply autofilter to a range of cells            將自動過濾器應用於指定範圍的單元格
  Setting security on a spreadsheet               在電子表格上設置安全性
  Setting data validation on a cell               在單元上設置數據驗證
  Setting a column's width                        設置列的寬度
  Show/hide a column                              顯示/隱藏列
  Group/outline a column                          分組/概述一列
  Setting a row's height                          設置行的高度
  Show/hide a row                                 顯示/隱藏行
  Group/outline a row                             分組/概述行
  Merge/unmerge cells                             合併/取消合併單元格
  Inserting rows/columns                          插入行/列
  Add a drawing to a worksheet                    將工程圖添加到工做表
  Reading Images from a worksheet                 從工做表中讀取圖像
  Add rich text to a cell                         向單元格添加富文本
  Define a named range                            定義一個命名範圍
  Redirect output to a client's web browser       將輸出重定向到客戶端的Web瀏覽器
  Setting the default column width                設置默認列寬
  Setting the default row height                  設置默認行高
  Add a GD drawing to a worksheet                 將GD工程圖添加到工做表
  Setting worksheet zoom level                    設置工做表縮放級別
  Sheet tab color                                 工做表標籤顏色
  Creating worksheets in a workbook               在工做簿中建立工做表
  Hidden worksheets (Sheet states)                隱藏的工做表(Sheet狀態)
  Right-to-left worksheet                         從右到左的工做表
Configuration Settings                              配置設定
    Cell collection caching                         單元格集合緩存
    Language/Locale                                 語言/地區
Worksheets                                          工做表
  Adding a new Worksheet                          添加一個新的工做表
  Copying Worksheets                              複製工做表
  Removing a Worksheet                            刪除工做表

 

一點我的經驗:

//第一行凍結
            $sheet->freezePaneByColumnAndRow(1, 1);
            $sheet->freezePaneByColumnAndRow(1, 2);
//吧列轉換成A B C AA等列的形式
Coordinate::stringFromColumnIndex('9')

專用的類來操縱座標

曾經存在於PHPExcel_Cell其中的座標處理方法被提取到一個專用的新類中\PhpOffice\PhpSpreadsheet\Cell\Coordinate方法是:api

  • absoluteCoordinate()
  • absoluteReference()
  • buildRange()
  • columnIndexFromString()
  • coordinateFromString()
  • extractAllCellReferencesInRange()
  • getRangeBoundaries()
  • mergeRangesInCollection()
  • rangeBoundaries()
  • rangeDimension()
  • splitRange()
  • stringFromColumnIndex()
//給某一個單元格添加註釋
$sheet->getComment(Coordinate::stringFromColumnIndex('9') . $Row)->getText()->createTextRun('註釋');

 

在一系列單元格上設置自動過濾器。

$spreadsheet->getActiveSheet()->setAutoFilter('A1:E20');

 

若是要將整個工做表設置爲自動篩選區域

$spreadsheet->getActiveSheet()->setAutoFilter(
    $spreadsheet->getActiveSheet()
        ->calculateWorksheetDimension()
);
要將過濾器表達式應用於autoFilter範圍,首先須要肯定要將此過濾器應用於哪一列。

$autoFilter = $spreadsheet->getActiveSheet()->getAutoFilter();
$columnFilter = $autoFilter->getColumn('C');

 

\vendor\phpoffice\phpspreadsheet\samples\index.php   這裏面有不少的demo數組

 

//給表格設置樣式
$styleArray = self::getStyleArray($Row);
$sheet->getStyle('B2:G8')->applyFromArray($styleArray);

 

// 設置富文本,可是支持的html的標籤很少
$html5
= '<strong>bold</strong>, <em>italic</em>, <strong><em>bold+italic</em></strong>'; $wizard = new HtmlHelper(); $richText = $wizard->toRichTextObject($html1); $spreadsheet->getActiveSheet()->setCellValue('A1', $richText);

注意這裏對閉合的標籤支持會好一些,儘可能使用閉合標籤,解析效果會好一點
是吧html標籤解析成xml轉義進excel的

 

//設置富文本備註的寬度
$wizard = new Html();
$richText = $wizard->toRichTextObject($html1);
$sheet->getComment(Coordinate::stringFromColumnIndex('10') . $Row)->setWidth('800pt')->getText()->createTextRun($richText);

 

// Create new Spreadsheet object
use PhpOffice\PhpSpreadsheet\RichText\RichText;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Font;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Style\Protection;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;

$helper->log('Create new Spreadsheet object');
$spreadsheet = new Spreadsheet();

// 設置文檔相關屬性
$helper->log('Set document properties');
$spreadsheet->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');

// 建立一張表,表示銷售數據
$helper->log('Add some data');
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getActiveSheet()->setCellValue('B1', 'Invoice');
$spreadsheet->getActiveSheet()->setCellValue('D1', Date::PHPToExcel(gmmktime(0, 0, 0, date('m'), date('d'), date('Y'))));
$spreadsheet->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_XLSX15);
$spreadsheet->getActiveSheet()->setCellValue('E1', '#12566');

$spreadsheet->getActiveSheet()->setCellValue('A3', 'Product Id');
$spreadsheet->getActiveSheet()->setCellValue('B3', 'Description');
$spreadsheet->getActiveSheet()->setCellValue('C3', 'Price');
$spreadsheet->getActiveSheet()->setCellValue('D3', 'Amount');
$spreadsheet->getActiveSheet()->setCellValue('E3', 'Total');

$spreadsheet->getActiveSheet()->setCellValue('A4', '1001');
$spreadsheet->getActiveSheet()->setCellValue('B4', 'PHP for dummies');
$spreadsheet->getActiveSheet()->setCellValue('C4', '20');
$spreadsheet->getActiveSheet()->setCellValue('D4', '1');
$spreadsheet->getActiveSheet()->setCellValue('E4', '=IF(D4<>"",C4*D4,"")');

$spreadsheet->getActiveSheet()->setCellValue('A5', '1012');
$spreadsheet->getActiveSheet()->setCellValue('B5', 'OpenXML for dummies');
$spreadsheet->getActiveSheet()->setCellValue('C5', '22');
$spreadsheet->getActiveSheet()->setCellValue('D5', '2');
$spreadsheet->getActiveSheet()->setCellValue('E5', '=IF(D5<>"",C5*D5,"")');

$spreadsheet->getActiveSheet()->setCellValue('E6', '=IF(D6<>"",C6*D6,"")');
$spreadsheet->getActiveSheet()->setCellValue('E7', '=IF(D7<>"",C7*D7,"")');
$spreadsheet->getActiveSheet()->setCellValue('E8', '=IF(D8<>"",C8*D8,"")');
$spreadsheet->getActiveSheet()->setCellValue('E9', '=IF(D9<>"",C9*D9,"")');

$spreadsheet->getActiveSheet()->setCellValue('D11', 'Total excl.:');
$spreadsheet->getActiveSheet()->setCellValue('E11', '=SUM(E4:E9)');

$spreadsheet->getActiveSheet()->setCellValue('D12', 'VAT:');
$spreadsheet->getActiveSheet()->setCellValue('E12', '=E11*0.21');

$spreadsheet->getActiveSheet()->setCellValue('D13', 'Total incl.:');
$spreadsheet->getActiveSheet()->setCellValue('E13', '=E11+E12');

// 添加備註
$helper->log('Add comments');

$spreadsheet->getActiveSheet()->getComment('E11')->setAuthor('PhpSpreadsheet');
$commentRichText = $spreadsheet->getActiveSheet()->getComment('E11')->getText()->createTextRun('PhpSpreadsheet:');
$commentRichText->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n");
$spreadsheet->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.');

$spreadsheet->getActiveSheet()->getComment('E12')->setAuthor('PhpSpreadsheet');
$commentRichText = $spreadsheet->getActiveSheet()->getComment('E12')->getText()->createTextRun('PhpSpreadsheet:');
$commentRichText->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getComment('E12')->getText()->createTextRun("\r\n");
$spreadsheet->getActiveSheet()->getComment('E12')->getText()->createTextRun('Total amount of VAT on the current invoice.');

$spreadsheet->getActiveSheet()->getComment('E13')->setAuthor('PhpSpreadsheet');
$commentRichText = $spreadsheet->getActiveSheet()->getComment('E13')->getText()->createTextRun('PhpSpreadsheet:');
$commentRichText->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getComment('E13')->getText()->createTextRun("\r\n");
$spreadsheet->getActiveSheet()->getComment('E13')->getText()->createTextRun('Total amount on the current invoice, including VAT.');
$spreadsheet->getActiveSheet()->getComment('E13')->setWidth('100pt');
$spreadsheet->getActiveSheet()->getComment('E13')->setHeight('100pt');
$spreadsheet->getActiveSheet()->getComment('E13')->setMarginLeft('150pt');
$spreadsheet->getActiveSheet()->getComment('E13')->getFillColor()->setRGB('EEEEEE');

// 添加富文本字符串
$helper->log('Add rich-text string');
$richText = new RichText();
$richText->createText('This invoice is ');

$payable = $richText->createTextRun('payable within thirty days after the end of the month');
$payable->getFont()->setBold(true);
$payable->getFont()->setItalic(true);
$payable->getFont()->setColor(new Color(Color::COLOR_DARKGREEN));

$richText->createText(', unless specified otherwise on the invoice.');

$spreadsheet->getActiveSheet()->getCell('A18')->setValue($richText);

// 合併單元格
$helper->log('Merge cells');
$spreadsheet->getActiveSheet()->mergeCells('A18:E22');
$spreadsheet->getActiveSheet()->mergeCells('A28:B28'); // Just to test...
$spreadsheet->getActiveSheet()->unmergeCells('A28:B28'); // Just to test...
// 保護單元格不被修改
$helper->log('Protect cells');
$spreadsheet->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection!
$spreadsheet->getActiveSheet()->protectCells('A3:E13', 'PhpSpreadsheet');

// 設置單元格編號格式
$helper->log('Set cell number formats');
$spreadsheet->getActiveSheet()->getStyle('E4:E13')->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);

// 設置列寬
$helper->log('Set column widths');
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(12);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(12);

// 設置字體
$helper->log('Set fonts');
$spreadsheet->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara');
$spreadsheet->getActiveSheet()->getStyle('B1')->getFont()->setSize(20);
$spreadsheet->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(Font::UNDERLINE_SINGLE);
$spreadsheet->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(Color::COLOR_WHITE);

$spreadsheet->getActiveSheet()->getStyle('D1')->getFont()->getColor()->setARGB(Color::COLOR_WHITE);
$spreadsheet->getActiveSheet()->getStyle('E1')->getFont()->getColor()->setARGB(Color::COLOR_WHITE);

$spreadsheet->getActiveSheet()->getStyle('D13')->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getStyle('E13')->getFont()->setBold(true);

// 設置對其方式
$helper->log('Set alignments');
$spreadsheet->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$spreadsheet->getActiveSheet()->getStyle('D12')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$spreadsheet->getActiveSheet()->getStyle('D13')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);

$spreadsheet->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_JUSTIFY);
$spreadsheet->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);

$spreadsheet->getActiveSheet()->getStyle('B5')->getAlignment()->setShrinkToFit(true);

// 在列周圍設置細的黑色邊框輪廓
$helper->log('Set thin black border outline around column');
$styleThinBlackBorderOutline = [
    'borders' => [
        'outline' => [
            'borderStyle' => Border::BORDER_THIN,
            'color' => ['argb' => 'FF000000'],
        ],
    ],
];
$spreadsheet->getActiveSheet()->getStyle('A4:E10')->applyFromArray($styleThinBlackBorderOutline);

// 在「總計」周圍設置粗的棕色邊框輪廓
$helper->log('Set thick brown border outline around Total');
$styleThickBrownBorderOutline = [
    'borders' => [
        'outline' => [
            'borderStyle' => Border::BORDER_THICK,
            'color' => ['argb' => 'FF993300'],
        ],
    ],
];
$spreadsheet->getActiveSheet()->getStyle('D13:E13')->applyFromArray($styleThickBrownBorderOutline);

// 設置填充
$helper->log('Set fills');
$spreadsheet->getActiveSheet()->getStyle('A1:E1')->getFill()->setFillType(Fill::FILL_SOLID);
$spreadsheet->getActiveSheet()->getStyle('A1:E1')->getFill()->getStartColor()->setARGB('FF808080');

// 使用替代方法設置標題行的樣式
$helper->log('Set style for header row using alternative method');
$spreadsheet->getActiveSheet()->getStyle('A3:E3')->applyFromArray(
    [
            'font' => [
                'bold' => true,
            ],
            'alignment' => [
                'horizontal' => Alignment::HORIZONTAL_RIGHT,
            ],
            'borders' => [
                'top' => [
                    'borderStyle' => Border::BORDER_THIN,
                ],
            ],
            'fill' => [
                'fillType' => Fill::FILL_GRADIENT_LINEAR,
                'rotation' => 90,
                'startColor' => [
                    'argb' => 'FFA0A0A0',
                ],
                'endColor' => [
                    'argb' => 'FFFFFFFF',
                ],
            ],
        ]
);

$spreadsheet->getActiveSheet()->getStyle('A3')->applyFromArray(
    [
            'alignment' => [
                'horizontal' => Alignment::HORIZONTAL_LEFT,
            ],
            'borders' => [
                'left' => [
                    'borderStyle' => Border::BORDER_THIN,
                ],
            ],
        ]
);

$spreadsheet->getActiveSheet()->getStyle('B3')->applyFromArray(
    [
            'alignment' => [
                'horizontal' => Alignment::HORIZONTAL_LEFT,
            ],
        ]
);

$spreadsheet->getActiveSheet()->getStyle('E3')->applyFromArray(
    [
            'borders' => [
                'right' => [
                    'borderStyle' => Border::BORDER_THIN,
                ],
            ],
        ]
);

// 取消單元格保護
$helper->log('Unprotect a cell');
$spreadsheet->getActiveSheet()->getStyle('B1')->getProtection()->setLocked(Protection::PROTECTION_UNPROTECTED);

// 在工做表中添加超連接
$helper->log('Add a hyperlink to an external website');
$spreadsheet->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net');
$spreadsheet->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl('https://www.example.com');
$spreadsheet->getActiveSheet()->getCell('E26')->getHyperlink()->setTooltip('Navigate to website');
$spreadsheet->getActiveSheet()->getStyle('E26')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);

$helper->log('Add a hyperlink to another cell on a different worksheet within the workbook');
$spreadsheet->getActiveSheet()->setCellValue('E27', 'Terms and conditions');
$spreadsheet->getActiveSheet()->getCell('E27')->getHyperlink()->setUrl("sheet://'Terms and conditions'!A1");
$spreadsheet->getActiveSheet()->getCell('E27')->getHyperlink()->setTooltip('Review terms and conditions');
$spreadsheet->getActiveSheet()->getStyle('E27')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);

// 將工程圖添加到工做表
$helper->log('Add a drawing to the worksheet');
$drawing = new Drawing();
$drawing->setName('Logo');
$drawing->setDescription('Logo');
$drawing->setPath(__DIR__ . '/../images/officelogo.jpg');
$drawing->setHeight(36);
$drawing->setWorksheet($spreadsheet->getActiveSheet());

// 將工程圖添加到工做表
$helper->log('Add a drawing to the worksheet');
$drawing = new Drawing();
$drawing->setName('Paid');
$drawing->setDescription('Paid');
$drawing->setPath(__DIR__ . '/../images/paid.png');
$drawing->setCoordinates('B15');
$drawing->setOffsetX(110);
$drawing->setRotation(25);
$drawing->getShadow()->setVisible(true);
$drawing->getShadow()->setDirection(45);
$drawing->setWorksheet($spreadsheet->getActiveSheet());

// 將工程圖添加到工做表
$helper->log('Add a drawing to the worksheet');
$drawing = new Drawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setDescription('PhpSpreadsheet logo');
$drawing->setPath(__DIR__ . '/../images/PhpSpreadsheet_logo.png');
$drawing->setHeight(36);
$drawing->setCoordinates('D24');
$drawing->setOffsetX(10);
$drawing->setWorksheet($spreadsheet->getActiveSheet());

// 嘗試插入和刪除行和列
$helper->log('Play around with inserting and removing rows and columns');
$spreadsheet->getActiveSheet()->insertNewRowBefore(6, 10);
$spreadsheet->getActiveSheet()->removeRow(6, 10);
$spreadsheet->getActiveSheet()->insertNewColumnBefore('E', 5);
$spreadsheet->getActiveSheet()->removeColumn('E', 5);

// 設置頁眉和頁腳。 當不使用奇數/偶數的不一樣標頭時,將採用奇數標頭。
$helper->log('Set header/footer');
$spreadsheet->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BInvoice&RPrinted on &D');
$spreadsheet->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $spreadsheet->getProperties()->getTitle() . '&RPage &P of &N');

// 設置頁面方向和大小
$helper->log('Set page orientation and size');
$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_PORTRAIT);
$spreadsheet->getActiveSheet()->getPageSetup()->setPaperSize(PageSetup::PAPERSIZE_A4);

// 重命名第一個工做表
$helper->log('Rename first worksheet');
$spreadsheet->getActiveSheet()->setTitle('Invoice');

// 在默認工做表以後建立一個新的工做表
$helper->log('Create a second Worksheet object');
$spreadsheet->createSheet();

// 看不懂什麼語言
$sLloremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus eget ante. Sed cursus nunc semper tortor. Aliquam luctus purus non elit. Fusce vel elit commodo sapien dignissim dignissim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur accumsan magna sed massa. Nullam bibendum quam ac ipsum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin augue. Praesent malesuada justo sed orci. Pellentesque lacus ligula, sodales quis, ultricies a, ultricies vitae, elit. Sed luctus consectetuer dolor. Vivamus vel sem ut nisi sodales accumsan. Nunc et felis. Suspendisse semper viverra odio. Morbi at odio. Integer a orci a purus venenatis molestie. Nam mattis. Praesent rhoncus, nisi vel mattis auctor, neque nisi faucibus sem, non dapibus elit pede ac nisl. Cras turpis.';

// 將一些數據添加到第二張表中,相似於一些不一樣的數據類型
$helper->log('Add some data');
$spreadsheet->setActiveSheetIndex(1);
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Terms and conditions');
$spreadsheet->getActiveSheet()->setCellValue('A3', $sLloremIpsum);
$spreadsheet->getActiveSheet()->setCellValue('A4', $sLloremIpsum);
$spreadsheet->getActiveSheet()->setCellValue('A5', $sLloremIpsum);
$spreadsheet->getActiveSheet()->setCellValue('A6', $sLloremIpsum);

// 設置工做表標籤的顏色
$helper->log('Set the worksheet tab color');
$spreadsheet->getActiveSheet()->getTabColor()->setARGB('FF0094FF');

// 設置對其方式
$helper->log('Set alignments');
$spreadsheet->getActiveSheet()->getStyle('A3:A6')->getAlignment()->setWrapText(true);

// 設置列寬
$helper->log('Set column widths');
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(80);

// 設置字體
$helper->log('Set fonts');
$spreadsheet->getActiveSheet()->getStyle('A1')->getFont()->setName('Candara');
$spreadsheet->getActiveSheet()->getStyle('A1')->getFont()->setSize(20);
$spreadsheet->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getStyle('A1')->getFont()->setUnderline(Font::UNDERLINE_SINGLE);

$spreadsheet->getActiveSheet()->getStyle('A3:A6')->getFont()->setSize(8);

// 將圖形添加到工做表
$helper->log('Add a drawing to the worksheet');
$drawing = new Drawing();
$drawing->setName('Terms and conditions');
$drawing->setDescription('Terms and conditions');
$drawing->setPath(__DIR__ . '/../images/termsconditions.jpg');
$drawing->setCoordinates('B14');
$drawing->setWorksheet($spreadsheet->getActiveSheet());

// 設置頁面方向和大小
$helper->log('Set page orientation and size');
$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
$spreadsheet->getActiveSheet()->getPageSetup()->setPaperSize(PageSetup::PAPERSIZE_A4);

// 重命名第二個工做表
$helper->log('Rename second worksheet');
$spreadsheet->getActiveSheet()->setTitle('Terms and conditions');

// 將活動工做表索引設置爲第一張工做表,所以Excel將其打開爲第一張工做表
$spreadsheet->setActiveSheetIndex(0);

return $spreadsheet;
相關文章
相關標籤/搜索