使用PhpSpreadsheet對Excel文件進行操作


 


 

環境要求

  • PHP 5.6或更高版本
  • PHP擴展php_zip
  • PHP擴展php_xml
  • PHP擴展php_gd2

 


 

安裝

使用composer將PhpSpreadsheet安裝到您的項目中:

composer require phpoffice/phpspreadsheet

 composer的安裝可以參考:這里


 

使用

引入PhpSpreadsheet:

require 'vendor/autoload.php';

 

輸出一個Hello World工作表:

$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet -> setCellValue('A1', 'Hello World !');

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer -> save('hello world.xlsx');

 

讀取一個工作表的所有內容:

$inputFileName = '1.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
$countSheet = $spreadsheet -> getSheetCount();
for ($i = 0; $i < $countSheet; $i++)
{
    $currentSheet = $spreadsheet -> getSheet($i);
    $dataArray[$i] = $currentSheet -> toArray();
    
    print_r($dataArray[$i]);
}

 

編輯工作表內容:

$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); //創建一個新的工作表
$worksheet = $spreadsheet->getActiveSheet();

//樣式設置 - 字體
$worksheet -> getStyle('A1:G10') -> getFont() 
           -> setBold(true) -> setName('Arial') 
           -> setSize(10); //設置單元格A7:G10的字體樣式
           
$worksheet -> getStyle('A1') -> getFont() 
           -> getColor() -> setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED); //設置單元格A1的字體顏色
           
$spreadsheet -> getDefaultStyle()->getFont()->setName('微軟雅黑'); //修改默認字體

//樣式設置 - 列寬
$worksheet -> getColumnDimension('A') -> setWidth(30); //設置A列寬度為30
$worksheet -> getColumnDimension('B') -> setAutoSize(true); //自動設置B列寬度
$worksheet -> getDefaultColumnDimension() -> setWidth(12); //設置默認列寬為12

//樣式設置 - 行高
$worksheet -> getRowDimension('10') -> setRowHeight(100); //設置第10行高度為100
$worksheet -> getDefaultRowDimension() -> setRowHeight(15); //設置默認行高為15

//樣式設置 - 水平、垂直居中
$styleArray = [
    'alignment' => [
        'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
        'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER
    ],
];
$worksheet -> getStyle('A1:G10') -> applyFromArray($styleArray);

//樣式設置 - 邊框
$styleArray = [
    'borders' => [
        'outline' => [
            'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
            'color' => ['argb' => 'FF0000'],
        ],
        'inside' => [
            'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
        ]
    ],
];
$worksheet -> getStyle('A1:G10') -> applyFromArray($styleArray);

//樣式設置 - 單元格背景顏色
$worksheet -> getStyle('A1:G10') -> getFill() 
           -> setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) 
           -> getStartColor() -> setARGB('FF9800');

//樣式設置 - 合並和拆分
$worksheet -> mergeCells('C3:G3'); //合並單元格
$worksheet -> unmergeCells('C3:G3'); //拆分單元格

//內容設置
$worksheet -> setCellValue('A1', 'xmsb'); //設置A1單元格內容為xmsb

//插入圖片
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing -> setName('tupian');
$drawing -> setDescription('tupian');
$drawing -> setPath('./1.jpg');
$drawing -> setHeight(125);
$drawing -> setWorksheet($worksheet);
$drawing -> setCoordinates('A1');

//導出工作表
//$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
//$writer -> save('write.xlsx');

//下載工作表
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="1.xlsx"');
header('Cache-Control: max-age=0');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM