日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PhpSpreadsheet 电子表格(excel) PHP处理笔记

發布時間:2025/3/15 php 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PhpSpreadsheet 电子表格(excel) PHP处理笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 安裝

composer require phpoffice/phpspreadsheet

Github地址:PHPOffice/PhpSpreadsheet

文檔地址:PhpSpreadsheet’s documentation

2 基本用法

// 這里是以thinkphp5環境為例 use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx;$spreadsheet = new Spreadsheet(); // 創建新表格 $spreadsheet->createSheet(); // 創建sheet $sheet = $spreadsheet->getActiveSheet(); // 獲取當前sheet $sheet->setCellValue('A1', 'Hello World222 !'); // 設置單元格A1的值header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//瀏覽器輸出07Excel文件 //header('Content-Type:application/vnd.ms-excel');//瀏覽器將要輸出Excel03版本文件 header('Content-Disposition: attachment;filename="'.time().'.xlsx"');//瀏覽器輸出瀏覽器名稱 header('Cache-Control: max-age=0'); //禁止緩存 $writer = new Xlsx($spreadsheet); $writer->save('php://output'); // 直接下載excel // $writer->save('1.xlsx'); 默認保存到根目錄,thinkphp5里默認是public目錄// 斷開連接,銷毀對象 $spreadsheet->disconnectWorksheets(); unset($spreadsheet);

3 添加sheet

use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;// 添加sheet $myWorkSheet = new Worksheet($spreadsheet, 'My Data'); // sheet名稱 $spreadsheet->addSheet($myWorkSheet, 0); // 添加sheet位置index

4 獲取sheet下標/名稱,切換sheet

$sheet = $spreadsheet->getSheet(1); // 根據下標獲取sheet $sheet = $spreadsheet->getSheetByName('Worksheet 1'); //根據name獲取sheet // 切換當前sheet $spreadsheet->setActiveSheetIndex(1); // 按sheet下標切換 $spreadsheet->setActiveSheetIndexByName('Sheet 1'); // 按sheet name切換

5 批量設置單元格數據

// 設置單元格數據 $arrayData = [[NULL, 2010, 2011, 2012],['Q1', 12, 15, 21],['Q2', 56, 73, 86],['Q3', 52, 61, 69],['Q4', 30, 32, 0], ]; $sheet->fromArray($arrayData, // The data to set NULL, // Array values with this value will not be set'C3' // Top left coordinate of the worksheet range where// we want to set these values (default is A1) );


如果是設置一行,可以設置一維數組;

$arrayData = [1,2,3,4];

如果想設置一列數據,可以這樣:

$arrayData = [1,2,3,4]; $columnArray = array_chunk($rowArray, 1);

6 加載表格

方式1:

use PhpOffice\PhpSpreadsheet\IOFactory;$inputFileName = 'C:\Users\Administrator\Document\1.xlsx'; /** 獲得文檔類型(xls/xlsx) **/ $inputFileType = IOFactory::identify($inputFileName); /** Create a new Reader of the type that has been identified **/ $reader = IOFactory::createReader($inputFileType); /** Load $inputFileName to a Spreadsheet Object **/ $spreadsheet = $reader->load($inputFileName);

方式2:

use PhpOffice\PhpSpreadsheet\IOFactory;$inputFileName = 'C:\Users\Administrator\Document\1.xlsx'; $spreadsheet = IOFactory::load($inputFileName);

因第一種方式得到了具體的文件類型,所以處理起來會比較快。

7 遍歷單元格

use PhpOffice\PhpSpreadsheet\IOFactory;//1. 使用迭代器遍歷單元格 $reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(TRUE); $spreadsheet = $reader->load('1.xlsx'); $worksheet = $spreadsheet->getActiveSheet(); echo '<table>' . PHP_EOL; foreach ($worksheet->getRowIterator() as $row) {echo '<tr>' . PHP_EOL;$cellIterator = $row->getCellIterator();$cellIterator->setIterateOnlyExistingCells(FALSE);foreach ($cellIterator as $cell) {echo '<td>' .$cell->getValue() .'</td>' . PHP_EOL;}echo '</tr>' . PHP_EOL; } echo '</table>' . PHP_EOL;// 2.使用索引循環遍歷單元格 use PhpOffice\PhpSpreadsheet\Cell\Coordinate; // Get the highest row and column numbers referenced in the worksheet $highestRow = $worksheet->getHighestRow(); // e.g. 10 $highestColumn = $worksheet->getHighestColumn(); // e.g 'F' $highestColumnIndex = Coordinate::columnIndexFromString($highestColumn); // e.g. 5echo '<table>' . "\n"; for ($row = 1; $row <= $highestRow; ++$row) {echo '<tr>' . PHP_EOL;for ($col = 1; $col <= $highestColumnIndex; ++$col) {$value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();echo '<td>' . $value . '</td>' . PHP_EOL;}echo '</tr>' . PHP_EOL; } echo '</table>' . PHP_EOL;

8 刪除sheet

$sheetIndex = $spreadsheet->getIndex($spreadsheet->getSheetByName('Worksheet 1') ); $spreadsheet->removeSheetByIndex($sheetIndex);

9 設置文檔元數據(摘要信息)

$spreadsheet->getProperties()->setCreator("Zhang Ying")->setLastModifiedBy("Zhang Ying")->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");

10 小技巧

(1) 單元格內換行

$sheet->getCell('B1')->setValue("hello\nworld"); $sheet->getStyle('B1')->getAlignment()->setWrapText(true);

(2) 強制設置單元格格式為string格式,設置正常數字

$sheet->setCellValueExplicit('A8',"0123456",DataType::TYPE_STRING); $sheet->getStyle('A9')->getNumberFormat()->setFormatCode('00000000000');

(3) 設置列寬度自適應

$sheet->getColumnDimension('A')->setAutoSize(true);

(4) 按行、列下標設置和查詢單元格數據

// 按列和行設置單元格值 $sheet->setCellValueByColumnAndRow(1, 3, 'PhpSpreadsheet Demo'); // 按列和行查詢單元格值 $sheet->getCellByColumnAndRow(2, 5)->getValue();

(5) 開啟篩選功能

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

(6) 設置打印格式

use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE); $spreadsheet->getActiveSheet()->getPageSetup()->setPaperSize(PageSetup::PAPERSIZE_A4);

總結

以上是生活随笔為你收集整理的PhpSpreadsheet 电子表格(excel) PHP处理笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。