欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > PHP使用PhpSpreadsheet操作Excel實例詳解

PHP使用PhpSpreadsheet操作Excel實例詳解

熱門標簽:南寧電話外呼系統線路 辦理400電話哪家好點 咸陽電銷 濟源百應電銷機器人聯系方式 邢臺400電話辦理 正規電銷機器人系統 嘟嘟云外呼系統 南京3D地圖標注 重慶外呼電銷系統多少錢

本文實例講述了PHP使用PhpSpreadsheet操作Excel。分享給大家供大家參考,具體如下:

一、PhpSpreadsheet 介紹

1、PhpSpreadsheet 是什么

PhpSpreadsheet是一個用純PHP編寫的庫,提供了一組類,使您可以讀取和寫入不同的電子表格文件格式
PhpSpreadsheet提供了豐富的API接口,可以設置諸多單元格以及文檔屬性,包括樣式、圖片、日期、函數等等諸多應用,總之你想要什么樣的Excel表格,PhpSpreadsheet都能做到

  • 使用 PhpSpreadsheet 開發的PHP要求 7.1或更高版本
  • PhpSpreadsheet 支持鏈式操作
2、PhpSpreadsheet 支持的文件格式

3、PhpSpreadsheet 官方網址
  • https://phpspreadsheet.readthedocs.io
4、PhpSpreadsheet 安裝
  • composer require phpoffice/phpspreadsheet

二、基礎知識

1、載入
?php
  # 載入composer自動加載文件 require 瑞塊兒
  require 'vendor/autoload.php'; autoload 奧特老特
  # 給類文件的命名空間起個別名
  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  # 實例化 Spreadsheet 對象
  $spreadsheet = new Spreadsheet();
2、獲取工作簿
  • getActiveSheet
?php
  # 載入composer自動加載文件
  require 'vendor/autoload.php';
  # 給類文件的命名空間起個別名
  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  # 實例化 Spreadsheet 對象
  $spreadsheet = new Spreadsheet();
  # 獲取活動工作薄
  $sheet = $spreadsheet->getActiveSheet();
3、獲取單元格
  • 兩種獲取單元格方式
  • getCell
  • getCellByColumnAndRow
?php
  # 載入composer自動加載文件
  require 'vendor/autoload.php';
  # 給類文件的命名空間起個別名
  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  # 實例化 Spreadsheet 對象
  $spreadsheet = new Spreadsheet();
  # 獲取活動工作薄
  $sheet = $spreadsheet->getActiveSheet();
  # 獲取單元格
  $cell = $sheet->getCell('A1');
  $cell = $sheet->getCellByColumnAndRow(1,1);
4、設置單元格
  • setValue
  • 參數:單元格的值
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 獲取單元格
	$cellA = $sheet->getCell('A1');
	# 設置單元格值
	$cellA->setValue('歐陽克');

	# 獲取單元格
	$cellB = $sheet->getCellByColumnAndRow(1,2);
	# 設置單元格值
	$cellB->setValue('黃蓉');

	# 獲取設置單元格,鏈式操作
	$sheet->getCell('A3')->setValue('郭靖');
	$sheet->getCellByColumnAndRow(1,4)->setValue('楊康');
5、獲取單元格值
  • getValue 獲取單元格值
  • getCoordinate 獲取單元格坐標
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 獲取單元格
	$cellA = $sheet->getCell('A1');
	# 設置單元格值
	$cellA->setValue('歐陽克');

	echo '值: ', $cellA->getValue(),PHP_EOL;
	echo '坐標: ', $cellA->getCoordinate();
6、保存表格
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 獲取單元格
	$cellA = $sheet->getCell('A1');
	# 設置單元格值
	$cellA->setValue('歐陽克');

	# 獲取單元格
	$cellB = $sheet->getCellByColumnAndRow(1,2);
	# 設置單元格值
	$cellB->setValue('黃蓉');

	# 獲取設置單元格,鏈式操作
	$sheet->getCell('A3')->setValue('郭靖');
	$sheet->getCellByColumnAndRow(1,4)->setValue('楊康');

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');

三、強化單元格

1、設置單元格
  • setCellValue
  • 參數1:單元格位置
  • 參數2:單元格的值
  • setCellValueByColumnAndRow
  • 參數1:列位置
  • 參數2:行位置
  • 參數3:單元格的值
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	$sheet->setCellValueByColumnAndRow(1, 3, 2);
	$sheet->setCellValueByColumnAndRow(2, 3, '黃蓉');
	$sheet->setCellValueByColumnAndRow(3, 3, '17歲');
	$sheet->setCellValueByColumnAndRow(4, 3, '165cm');

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
2、單元格文字樣式
  • getStyle 獲取單元格樣式
  • getFont 獲取單元格文字樣式
  • setBold 設置文字粗細
  • setName 設置文字字體
  • setSize 設置文字大小
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	$sheet->setCellValueByColumnAndRow(1, 3, 2);
	$sheet->setCellValueByColumnAndRow(2, 3, '黃蓉');
	$sheet->setCellValueByColumnAndRow(3, 3, '17歲');
	$sheet->setCellValueByColumnAndRow(4, 3, '165cm');

	$sheet->getStyle('B2')->getFont()->setBold(true)->setName('宋體')->setSize(20);

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
3、單元格文字顏色
  • getColor() 獲取坐標顏色
  • setRGB() 設置字體顏色
  • getRGB() 獲取字體顏色
  • setARGB() 設置字體顏色
  • getARGB() 獲取字體顏色
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	$sheet->setCellValueByColumnAndRow(1, 3, 2);
	$sheet->setCellValueByColumnAndRow(2, 3, '黃蓉');
	$sheet->setCellValueByColumnAndRow(3, 3, '17歲');
	$sheet->setCellValueByColumnAndRow(4, 3, '165cm');

	$sheet->getStyle('B2')->getFont()->getColor()->setRGB('#AEEEEE');
	echo $sheet->getStyle('B2')->getFont()->getColor()->getRGB(),PHP_EOL;

	$sheet->getStyle('B3')->getFont()->getColor()->setARGB('FFFF0000');
	echo $sheet->getStyle('B3')->getFont()->getColor()->getARGB();

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
4、單元格格式
  • getNumberFormat 獲取格式
  • setFormatCode 設置格式
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','2019-10-10 10:10:10');
	$sheet->setCellValue('A2','2019-10-10 10:10:10');
	$sheet->getStyle('A2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDD2);

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
  • setWrapText 設置文本里的\n符合為:換行
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1',"歐陽克\n黃蓉");
	$sheet->getStyle('A1')->getAlignment()->setWrapText(true);

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
  • getHyperlink 獲取單元格鏈接
  • setUrl 設置單元格鏈接
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','www.php.cn');
	$sheet->getCell('A1')->getHyperlink()->setUrl('http://www.php.cn');

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');

四、批量操作

1、使用公式
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','10');
	$sheet->setCellValue('B1','15');
	$sheet->setCellValue('C1','20');
	$sheet->setCellValue('D1','25');
	$sheet->setCellValue('E1','30');
	$sheet->setCellValue('G1','35');
	$sheet->setCellValue('A2', '總數:');
	$sheet->setCellValue('B2', '=SUM(A1:G1)');
	$sheet->setCellValue('A3', '平均數:');
	$sheet->setCellValue('B3', '=AVERAGE(A1:G1)');
	$sheet->setCellValue('A4', '最小數:');
	$sheet->setCellValue('B4', '=MIN(A1:G1)');
	$sheet->setCellValue('A5', '最大數:');
	$sheet->setCellValue('B5', '=MAX(A1:G1)');
	$sheet->setCellValue('A6', '最大數:');
	$sheet->setCellValue('B6', '\=MAX(A1:G1)');	// 使用轉義字符

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
2、批量賦值
  • fromArray 從數組中的值填充工作表
  • 參數1:數據(數組)
  • 參數2:去除某個值
  • 參數3:從哪個位置開始
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->fromArray(
		[
			[1,'歐陽克','18歲','188cm'],
			[2,'黃蓉','17歲','165cm'],
			[3,'郭靖','21歲','180cm']
		],
		3,
		'A2'
	);

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
3、合并單元格
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->mergeCells('A1:B5');

	$sheet->getCell('A1')->setValue('歐陽克');

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');

合并后,賦值只能給A1,開始的坐標。

4、拆分單元格
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->mergeCells('A1:B5');

	$sheet->unmergeCells('A1:B5');

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
5、列和行操作
  • getColumnDimension 獲取一列
  • getWidth 獲取一列的寬度
  • setWidth 設置一列的寬度
  • setAutoSize 設置一列的寬度自動調整
  • getDefaultColumnDimension 獲取一列的默認值
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	echo $sheet->getColumnDimension('A')->getWidth();

	$sheet->getColumnDimension('A')->setWidth(100);

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

	$sheet->getDefaultColumnDimension()->setWidth(1);

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
  • getRowDimension 獲取一行
  • getRowHeight 獲取一行的高度
  • setRowHeight 設置一行的高度
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	echo $sheet->getRowDimension(1)->getRowHeight();

	$sheet->getRowDimension(1)->setRowHeight(100);

	$sheet->getDefaultRowDimension()->setRowHeight(1);

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
  • getHighestColumn 獲取總列數
  • getHighestRow 獲取總行數
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	$sheet->setCellValueByColumnAndRow(1, 3, 2);
	$sheet->setCellValueByColumnAndRow(2, 3, '黃蓉');
	$sheet->setCellValueByColumnAndRow(3, 3, '17歲');
	$sheet->setCellValueByColumnAndRow(4, 3, '165cm');

	echo $sheet->getHighestColumn();
	echo $sheet->getHighestRow();

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');
6、單元格樣式
  • applyFromArray
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	$styleArray = [
		// use PhpOffice\PhpSpreadsheet\Style\Alignment; 文件里常量,就是參數
		// Alignment::HORIZONTAL_CENTER 水平居中
		// Alignment::VERTICAL_CENTER	垂直居中
		'alignment' => [
			// 'horizontal' => Alignment::HORIZONTAL_CENTER, //水平居中
			// 'vertical' => Alignment::VERTICAL_CENTER, //垂直居中
			'horizontal' => 'center', //水平居中
			'vertical' => 'center', //垂直居中
		],
		// use PhpOffice\PhpSpreadsheet\Style\Border; 文件里常量,就是參數
		// Border::BORDER_THICK 邊框樣式
		'borders' => [
			'outline' => [
				// 'borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK',
				'borderStyle' => 'thick',
				'color' => ['argb' => 'FFFF0000'],
			],
		],
		'font' => [
			'name' => '黑體',
			'bold' => true,
			'size' => 22
		]
	];

	$sheet->getStyle('A1')->applyFromArray($styleArray);

	# Xlsx類 將電子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer->save('1.xlsx');

五、工作薄操作

1、xlsx 文件下載
  • IOFactory::createWriter 寫入到文件
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	// MIME 協議,文件的類型,不設置,會默認html
	header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
	// MIME 協議的擴展
	header('Content-Disposition:attachment;filename=1.xlsx');
	// 緩存控制
	header('Cache-Control:max-age=0');

	$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
	// php://output 它是一個只寫數據流, 允許你以 print 和 echo一樣的方式寫入到輸出緩沖區。 
	$writer->save('php://output');
2、xls 文件下載
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	$filename = '1.xls';
	header('Content-Type:application/vnd.ms-excel');
	header('Content-Disposition:attachment;filename=1.xls');
	header('Cache-Control:max-age=0');

	$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
	$writer->save('php://output');
3、設置工作簿標題
  • setTitle
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','姓名');
	$sheet->setCellValue('C1','年齡');
	$sheet->setCellValue('D1','身高');

	$sheet->setCellValueByColumnAndRow(1, 2, 1);
	$sheet->setCellValueByColumnAndRow(2, 2, '歐陽克');
	$sheet->setCellValueByColumnAndRow(3, 2, '18歲');
	$sheet->setCellValueByColumnAndRow(4, 2, '188cm');

	$sheet->setTitle('歐陽克');

	// MIME 協議,文件的類型,不設置,會默認html
	header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
	// MIME 協議的擴展
	header('Content-Disposition:attachment;filename=1.xlsx');
	// 緩存控制
	header('Cache-Control:max-age=0');

	$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
	// php://output 它是一個只寫數據流, 允許你以 print 和 echo一樣的方式寫入到輸出緩沖區。 
	$writer->save('php://output');
4、讀取表格
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';

	# 創建讀操作
	$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
	# 打開文件、載入excel表格
	$spreadsheet = $reader->load('1.xlsx');
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 獲取 單元格值 和 坐標
	$cellC1 = $sheet->getCell('B2');
	echo '值: ', $cellC1->getValue(),PHP_EOL;
	echo '坐標: ', $cellC1->getCoordinate(),PHP_EOL;

	$sheet->setCellValue('B2','歐陽鋒');

	# 獲取 單元格值 和 坐標
	$cellC2 = $sheet->getCell('B2');
	echo '值: ', $cellC2->getValue(),PHP_EOL;
	echo '坐標: ', $cellC2->getCoordinate();

六、office 后綴對應的 content-type

后綴 MIME Type
.doc application/msword
.dot application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template
.docm application/vnd.ms-word.document.macroEnabled.12
.dotm application/vnd.ms-word.template.macroEnabled.12
.xls application/vnd.ms-excel
.xlt application/vnd.ms-excel
.xla application/vnd.ms-excel
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template
.xlsm application/vnd.ms-excel.sheet.macroEnabled.12
.xltm application/vnd.ms-excel.template.macroEnabled.12
.xlam application/vnd.ms-excel.addin.macroEnabled.12
.xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12
.ppt application/vnd.ms-powerpoint
.pot application/vnd.ms-powerpoint
.pps application/vnd.ms-powerpoint
.ppa application/vnd.ms-powerpoint
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.potx application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppam application/vnd.ms-powerpoint.addin.macroEnabled.12
.pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12
.potm application/vnd.ms-powerpoint.presentation.macroEnabled.12
.ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12

七、實戰

1、導出數據
  • login_log 登陸日志表
CREATE TABLE `login_log` (
	`id` int(11) NOT NULL AUTO_INCREMENT,
	`uid` int(11) DEFAULT NULL COMMENT '管理員ID',
	`client` tinyint(4) unsigned DEFAULT '0' COMMENT '0-PC 1-ios 2-android',
	`add_time` int(11) DEFAULT '0' COMMENT '創建時間',
	`ip` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '登錄IP',
	PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=1122 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='登錄日志';
  • index.php 數據列表頁面
?php 
	# 載入方法庫
	require 'function.php';

	$select = select('login_log','*');

	if(empty($select)){
		exit;
	}else{
		foreach($select as $v){
			switch ($v['client']) {
				case 0:
					$v['client'] = 'PC電腦';
					break;
				case 1:
					$v['client'] = '蘋果手機';
					break;
				case 2:
					$v['client'] = '安卓手機';
					break;
			}
			$v['add_time'] = date('Y-m-d H:i:s',$v['add_time']);
		}
	}
?>
!DOCTYPE html>
html lang="en">
	head>
		meta charset="UTF-8">
		title>導出數據/title>
		link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" rel="external nofollow" >
	/head>
	body>
		div style="text-align:center;">
			a href="download.php" rel="external nofollow" rel="external nofollow" class="layui-btn layui-btn-radius layui-btn-danger">導出數據/a>
		/div>
		table class="layui-table">
			thead>
				tr>
					th>ID/th>
					th>用戶ID/th>
					th>登陸設備/th>
					th>登陸時間/th>
					th>登陸ip/th>
				/tr> 
			/thead>
			tbody>
				?php 
					foreach($select as $v){
				?>
					tr>
						td>?php echo $v['id'] ?>/td>
						td>?php echo $v['uid'] ?>/td>
						td>?php echo $v['client'] ?>/td>
						td>?php echo $v['add_time'] ?>/td>
						td>?php echo $v['ip'] ?>/td>
					/tr>
				?php 
					} 
				?>
			/tbody>
		/table>
	/body>
/html>
  • download.php 導出操作
?php 
	# 載入方法庫
	require 'function.php';

	$select = select('login_log','*');

	if(empty($select)){
		exit;
	}else{
		foreach($select as $v){
			switch ($v['client']) {
				case 0:
					$v['client'] = 'PC電腦';
					break;
				case 1:
					$v['client'] = '蘋果手機';
					break;
				case 2:
					$v['client'] = '安卓手機';
					break;
			}
			$v['add_time'] = date('Y-m-d H:i:s',$v['add_time']);
		}
	}
	
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use \PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','ID');
	$sheet->setCellValue('B1','用戶ID');
	$sheet->setCellValue('C1','登陸設備');
	$sheet->setCellValue('D1','登陸時間');
	$sheet->setCellValue('E1','登陸ip');
	$sheet->fromArray(
		$select,
		null,
		'A2'
	);

	// MIME 協議,文件的類型,不設置,會默認html
	header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
	// MIME 協議的擴展
	header('Content-Disposition:attachment;filename=1.xlsx');
	// 緩存控制
	header('Cache-Control:max-age=0');

	$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
	// php://output 它是一個只寫數據流, 允許你以 print 和 echo一樣的方式寫入到輸出緩沖區。 
	$writer->save('php://output');
?>
2、導入數據
  • 數據庫
# 商品分類表
CREATE TABLE `shop_cat` (
	`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
	`pid` int(10) unsigned DEFAULT '0' COMMENT '父ID',
	`name` varchar(50) DEFAULT NULL COMMENT '分類名',
	`status` tinyint(1) unsigned DEFAULT '1' COMMENT '狀態 1開啟 0關閉',
	PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分類表';

INSERT INTO `shop_cat` VALUES (1, 0, '女裝', 1);
INSERT INTO `shop_cat` VALUES (2, 0, '男裝', 1);
INSERT INTO `shop_cat` VALUES (3, 0, '孕產', 1);
INSERT INTO `shop_cat` VALUES (4, 1, '連衣裙', 1);
INSERT INTO `shop_cat` VALUES (5, 1, '牛仔褲', 1);
INSERT INTO `shop_cat` VALUES (6, 2, '襯衫', 1);
INSERT INTO `shop_cat` VALUES (7, 3, '睡衣', 1);

# 商品表
CREATE TABLE `shop_list` (
	`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
	`cat_id` int(10) unsigned DEFAULT NULL COMMENT '分類ID',
	`cat_fid` int(10) unsigned DEFAULT NULL COMMENT '分類父ID',
	`title` varchar(200) NOT NULL COMMENT '商品標題',
	`price` double(10,2) unsigned NOT NULL COMMENT '價格',
	`img` varchar(200) NOT NULL COMMENT '商品圖片',
	`add_time` int(10) unsigned NOT NULL COMMENT '添加時間',
	PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
  • index.php 導入頁面
!DOCTYPE html>
html lang="en">
	head>
		meta charset="UTF-8">
		title>導出數據/title>
		link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" rel="external nofollow" >
	/head>
	body>
		div style="text-align:center;">
			button type="button" class="layui-btn" id="up">i class="layui-icon">/i>上傳文件/button>
			a href="download.php" rel="external nofollow" rel="external nofollow" class="layui-btn layui-btn-danger">i class="layui-icon">/i>示例下載/a>
		/div>
		div id="log" style="text-align:center;">
			
		/div>
	/body>
/html>
script src="layui/layui.js" charset="utf-8">/script>
script>
	layui.use('upload', function(){
		var $ = layui.jquery
		,upload = layui.upload;
		upload.render({
			elem: '#up'
			,url: 'data.php'
			,accept: 'file' //普通文件
			,done: function(res){
				if(res.code == 0){
					for(var i=0;ires.data.length;i++){
						$("#log").append('div>'+res.data[i]+'/div>');
					}
				}
			}
		});
	})
/script>
  • 導入功能
?php
	$file = $_FILES['file']['tmp_name'];
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 載入方法庫
	require 'function.php';

	# 創建讀操作
	$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
	# 打開文件、載入excel表格
	$spreadsheet = $reader->load($file);
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 獲取總列數
	$highestColumn = $sheet->getHighestColumn();
	# 獲取總行數
	$highestRow = $sheet->getHighestRow();

	# 列數 改為數字顯示
	$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
	$log = [];
	for($a=2;$a$highestRow;$a++){
		$title = $sheet->getCellByColumnAndRow(1,$a)->getValue();
		$cat_fname = $sheet->getCellByColumnAndRow(2,$a)->getValue();
		$cat_name = $sheet->getCellByColumnAndRow(3,$a)->getValue();
		$price = $sheet->getCellByColumnAndRow(4,$a)->getValue();
		$img = $sheet->getCellByColumnAndRow(5,$a)->getValue();

		$cat_fid = find('shop_cat','id','name="'.$cat_fname.'"');
		$cat_id = find('shop_cat','id','name="'.$cat_name.'"');
		$data = [
			'title' => $title,
			'cat_fid' => $cat_fid['id'],
			'cat_id' => $cat_id['id'],
			'price' => $price,
			'img' => $img,
			'add_time' => time(),
		];
		$ins = insert('shop_list',$data);
		if($ins){
			$log[] = '第'.$a.'條,插入成功';
		}else{
			$log[] = '第'.$a.'條,插入失敗';
		}
	}
	echo json_encode(['code'=>0,'msg'=>'成功','data'=>$log]);
  • 下載示例(范文)
?php
	# 載入composer自動加載文件
	require 'vendor/autoload.php';
	# 給類文件的命名空間起個別名
	use \PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 實例化 Spreadsheet 對象
	$spreadsheet = new Spreadsheet();
	# 獲取活動工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1','商品標題');
	$sheet->setCellValue('B1','一級分類');
	$sheet->setCellValue('C1','二級分類');
	$sheet->setCellValue('D1','進貨價');
	$sheet->setCellValue('E1','圖片');

	$data = [
		'云朵般輕盈的仙女裙 高級釘珠收腰長裙 氣質無袖連衣裙',
		'女裝',
		'連衣裙',
		279.99,
		'https://gd3.alicdn.com/imgextra/i3/266969832/O1CN01PWUBBB2MV6ekBKtb6_!!266969832.jpg_400x400.jpg',
	];
	$sheet->fromArray(
		$data,
		null,
		'A2'
	);

	// MIME 協議,文件的類型,不設置,會默認html
	header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
	// MIME 協議的擴展
	header('Content-Disposition:attachment;filename=商品列表示例.xlsx');
	// 緩存控制
	header('Cache-Control:max-age=0');

	$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
	// php://output 它是一個只寫數據流, 允許你以 print 和 echo一樣的方式寫入到輸出緩沖區。 
	$writer->save('php://output');

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php操作office文檔技巧總結(包括word,excel,access,ppt)》、《PHP數組(Array)操作技巧大全》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《PHP數學運算技巧總結》、《php正則表達式用法總結》、《php字符串(string)用法總結》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP讀取Excel內的圖片(phpspreadsheet和PHPExcel擴展庫)
  • ThinkPHP5與單元測試PHPUnit使用詳解
  • PHP單元測試配置與使用方法詳解
  • PHPUnit + Laravel單元測試常用技能
  • PHP使用phpunit進行單元測試示例
  • 使用PHPUnit進行單元測試并生成代碼覆蓋率報告的方法
  • PHP單元測試框架PHPUnit用法詳解
  • php使用unset()刪除數組中某個單元(鍵)的方法
  • PhpSpreadsheet設置單元格常用操作匯總

標簽:河南 通遼 隴南 唐山 武漢 黃山 南通 平頂山

巨人網絡通訊聲明:本文標題《PHP使用PhpSpreadsheet操作Excel實例詳解》,本文關鍵詞  PHP,使用,PhpSpreadsheet,操作,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP使用PhpSpreadsheet操作Excel實例詳解》相關的同類信息!
  • 本頁收集關于PHP使用PhpSpreadsheet操作Excel實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产成人免费视频一区| 欧美性xxxxx极品少妇| 精品精品欲导航| 日本亚洲一区二区| 色哟哟视频在线| 欧美精品九九99久久| 亚洲一区影音先锋| 性折磨bdsm欧美激情另类| 日本丰满少妇一区二区三区| 亚洲码国产岛国毛片在线| 成人18视频在线播放| 一本一道久久a久久精品| 亚洲视频在线一区二区| 成人动漫视频在线| 在线观看日韩高清av| 一区二区三区蜜桃网| 性生交大片免费看l| 欧美麻豆精品久久久久久| 亚洲妇熟xx妇色黄| 久久久久亚洲AV成人无码国产| 3d动漫精品啪啪1区2区免费| 奇米影视在线99精品| 国产精品1000部啪视频| 久久综合久久综合亚洲| 国内精品写真在线观看| 国产男女猛烈无遮挡在线喷水| 国产精品国产三级国产aⅴ原创| 成人av资源在线观看| 色香色香欲天天天影视综合网| 亚洲一区二区三区影院| 亚洲av成人片无码| 精品国产乱码久久久久久影片| 狠狠色丁香九九婷婷综合五月| 伊人久久久久久久久久久久久久| 成人免费在线视频观看| 少妇丰满尤物大尺度写真| 91精品国产福利在线观看 | 成人激情小说网站| 色综合久久88色综合天天| 亚洲精品国产一区二区精华液| 亚洲精品第二页| 久久综合国产精品| 成人av网在线| 在线成人午夜影院| 国产一区二区h| 欧美影院一区二区三区| 日韩中文字幕91| 亚洲AV成人无码网站天堂久久| 日韩美女视频一区| 色综合久久五月| 欧美国产精品一区二区三区| 免费看三级黄色片| 久久久久久一二三区| 99久久精品国产观看| 欧美精品 国产精品| 狠狠色综合色综合网络| 色屁屁一区二区| 蜜臀va亚洲va欧美va天堂| www欧美com| 天堂av在线一区| 婷婷激情四射网| 日日夜夜精品免费视频| 亚洲天堂精品一区| 亚洲国产精品视频| 国产精品成人在线视频| 亚洲高清免费视频| 在线观看亚洲网站| 免费在线欧美视频| 色www精品视频在线观看| 麻豆91在线播放免费| 色婷婷久久久综合中文字幕 | 久久久久久亚洲综合影院红桃| av中文字幕一区| 日韩精品一区二区三区中文不卡| 成人动漫精品一区二区| 欧美大片在线观看| 91免费看视频| 亚洲国产成人一区二区三区| 中文字幕免费在线播放| 国产精品国产馆在线真实露脸 | 久久久99精品免费观看| 91亚洲一线产区二线产区| 国产视频一区在线播放| 亚洲麻豆一区二区三区| 亚洲婷婷综合久久一本伊一区| 无码国产69精品久久久久同性| 亚洲精品亚洲人成人网在线播放| 国精产品视频一二二区| 日韩国产欧美三级| 欧美私模裸体表演在线观看| 国产成人精品一区二| 日韩免费观看高清完整版 | 日韩av一区二| 欧美色图一区二区三区| 国产69精品久久777的优势| 精品国产乱码久久久久久免费| 国产chinesehd精品露脸| 中文字幕一区二区日韩精品绯色| 欧美人与禽zoz0善交| 欧美aaa在线| 欧美一区二区三区四区高清| 91女神在线视频| 日韩一区在线看| 免费国产羞羞网站美图| 激情另类小说区图片区视频区| 日韩午夜激情视频| 艳妇乳肉豪妇荡乳xxx| 一区二区三区四区在线| 欧美黄色aaa| 国产黄人亚洲片| 国产欧美日韩在线| 欧美 日韩 国产 成人 在线观看 | 国产日本欧美一区二区| 国产福利短视频| 婷婷一区二区三区| 欧美日韩不卡在线| 国产ts在线观看| 亚洲一区二区三区精品在线| 日本韩国欧美国产| 99久久精品国产导航| 亚洲少妇屁股交4| 色哟哟国产精品| 91同城在线观看| 亚洲素人一区二区| 91黄色激情网站| 丰满饥渴老女人hd| 亚洲综合久久久久| 欧美亚洲综合网| 成年人看片网站| 亚洲成av人片在线观看| 7777精品久久久大香线蕉| 亚洲熟女一区二区| 日韩成人av影视| 精品国产网站在线观看| 久久美女免费视频| 国产精品资源在线| 国产精品久久久久久久久快鸭| 久久中文免费视频| 99这里都是精品| 亚洲一区中文日韩| 5566中文字幕一区二区电影| 97香蕉碰碰人妻国产欧美| 青青草国产精品亚洲专区无| 久久新电视剧免费观看| 永久免费观看片现看| 成人在线视频一区| 亚洲精品国产精华液| 欧美日韩国产综合视频在线观看| 国产激情视频网站| 久久疯狂做爰流白浆xx| 国产欧美精品国产国产专区| 丰满少妇高潮久久三区| 精品无码av一区二区三区不卡| 偷拍亚洲欧洲综合| 欧美mv和日韩mv的网站| 99成人在线观看| 91理论电影在线观看| 亚洲成人综合网站| 精品捆绑美女sm三区| 国产suv精品一区二区68| 成年人性生活视频| 麻豆成人久久精品二区三区小说| 国产免费久久精品| 欧美在线免费观看视频| 久久国产精品影院| 国产99久久久国产精品潘金| 亚洲精品成人悠悠色影视| 91精品国产综合久久久久久久久久| 免费看黄色的视频| 成人性生交大片免费看中文| 亚洲一区二区三区四区中文字幕 | 欧美成人一级视频| 一级免费黄色录像| 中文字幕 欧美 日韩| 麻豆免费精品视频| 中文字幕一区二区视频| 欧美夫妻性生活| 小泽玛利亚一区| 免费黄色三级网站| 成人性视频网站| 日本三级韩国三级欧美三级| 国产精品久久久久久久浪潮网站| 777久久久精品| 日韩免费av一区| 亚洲av成人片色在线观看高潮 | 日本久久电影网| 三上悠亚ssⅰn939无码播放| 成人h动漫精品| 美女视频网站黄色亚洲| 中文字幕亚洲在| 欧美电视剧免费观看| 在线一区二区观看| 国产精品国产三级国产专业不| 91视频国产观看| 国内精品久久久久影院薰衣草| 亚洲福利一区二区| 国产精品嫩草99a| 精品国产一区二区精华 | 粉嫩高潮美女一区二区三区| 午夜精品一区二区三区免费视频 |