下載 PHPExcel(https://github.com/PHPOffice/PHPExcel)
把下載的 zip 包解壓至 ./ThinkPHP/Library/Vendor 下
一、導入 Excel 數據
控制器自定,這里用 IndexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
// 導入 Excel
public function excel() {
header('Content-type: text/html; charset=utf-8');
vendor('PHPExcel.Classes.PHPExcel');
$file = './Data/example.xlsx';
$Excel = new \PHPExcel();
// 如果excel文件后綴名為.xls
// vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5");
// 如果excel文件后綴名為.xlsx
vendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007");
$PHPReader = new \PHPExcel_Reader_Excel2007();
// 載入文件
$Excel = $PHPReader -> load($file);
//獲取表中的第一個工作表,如果要獲取第二個,把0改為1,依次類推
$currentSheet = $Excel -> getSheet(0);
//獲取總列數
$allColumn = $currentSheet -> getHighestColumn();
//獲取總行數
$allRow = $currentSheet -> getHighestRow();
//循環獲取表中的數據,$currentRow表示當前行,從哪行開始讀取數據,索引值從0開始
for($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
//從哪列開始,A表示第一列
for($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
//數據坐標
$address = $currentColumn.$currentRow;
//讀取到的數據,保存到數組$arr中
$arr[$currentRow][$currentColumn] = $currentSheet
-> getCell($address)
-> getValue();
}
}
echo '<pre>';
var_export($arr);
}
}
輸出:
array (
1 =>
array (
'A' => '分公司名稱',
'B' => '姓名',
'C' => '金額',
),
2 =>
array (
'A' => 'A分公司',
'B' => '趙娟',
'C' => 1100,
),
3 =>
array (
'A' => 'B分公司',
'B' => '孔堅',
'C' => 1100,
),
4 =>
array (
'A' => 'C分公司',
'B' => '王華發',
'C' => 1300,
),
5 =>
array (
'A' => 'C分公司',
'B' => '趙輝',
'C' => 700,
),
6 =>
array (
'A' => 'B分公司',
'B' => '華發',
'C' => 1400,
),
7 =>
array (
'A' => 'A分公司',
'B' => '趙德國',
'C' => 700,
),
8 =>
array (
'A' => 'B分公司',
'B' => '沈芳虹',
'C' => 500,
),
9 =>
array (
'A' => 'C分公司',
'B' => '周紅玉',
'C' => 1100,
),
10 =>
array (
'A' => 'A分公司',
'B' => '施芬芳',
'C' => 800,
),
11 =>
array (
'A' => 'A分公司',
'B' => '蔣國建',
'C' => 1100,
),
12 =>
array (
'A' => 'B分公司',
'B' => '錢毅',
'C' => 1400,
),
13 =>
array (
'A' => 'B分公司',
'B' => '陳華惠',
'C' => 1200,
),
14 =>
array (
'A' => 'C分公司',
'B' => '曹香',
'C' => 1400,
),
15 =>
array (
'A' => 'A分公司',
'B' => '鄭紅妙',
'C' => 600,
),
16 =>
array (
'A' => 'A分公司',
'B' => '王宏仁',
'C' => 800,
),
17 =>
array (
'A' => 'C分公司',
'B' => '何丹美',
'C' => 1300,
),
)
需要導入的 Excel 文件如下:
二、導出 Excel
// 導出 Excel
public function export() {
vendor('PHPExcel.Classes.PHPExcel');
$Excel = new \PHPExcel();
$arr = array ( 1 => array ( 'A' => '分公司名稱', 'B' => '姓名', 'C' => '金額', ), 2 => array ( 'A' => 'A分公司', 'B' => '趙娟', 'C' => 1100, ), 3 => array ( 'A' => 'B分公司', 'B' => '孔堅', 'C' => 1100, ), 4 => array ( 'A' => 'C分公司', 'B' => '王華發', 'C' => 1300, ), 5 => array ( 'A' => 'C分公司', 'B' => '趙輝', 'C' => 700, ), 6 => array ( 'A' => 'B分公司', 'B' => '華發', 'C' => 1400, ), 7 => array ( 'A' => 'A分公司', 'B' => '趙德國', 'C' => 700, ), 8 => array ( 'A' => 'B分公司', 'B' => '沈芳虹', 'C' => 500, ), 9 => array ( 'A' => 'C分公司', 'B' => '周紅玉', 'C' => 1100, ), 10 => array ( 'A' => 'A分公司', 'B' => '施芬芳', 'C' => 800, ), 11 => array ( 'A' => 'A分公司', 'B' => '蔣國建', 'C' => 1100, ), 12 => array ( 'A' => 'B分公司', 'B' => '錢毅', 'C' => 1400, ), 13 => array ( 'A' => 'B分公司', 'B' => '陳華惠', 'C' => 1200, ), 14 => array ( 'A' => 'C分公司', 'B' => '曹香', 'C' => 1400, ), 15 => array ( 'A' => 'A分公司', 'B' => '鄭紅妙', 'C' => 600, ), 16 => array ( 'A' => 'A分公司', 'B' => '王宏仁', 'C' => 800, ), 17 => array ( 'A' => 'C分公司', 'B' => '何丹美', 'C' => 1300, ), );
// 設置
$Excel
->getProperties()
->setCreator("dee")
->setLastModifiedBy("dee")
->setTitle("數據EXCEL導出")
->setSubject("數據EXCEL導出")
->setDescription("數據EXCEL導出")
->setKeywords("excel")
->setCategory("result file");
foreach($arr as $key => $val) { // 注意 key 是從 0 還是 1 開始,此處是 0
// $num = $key + 1;
$Excel ->setActiveSheetIndex(0)
//Excel的第A列,uid是你查出數組的鍵值,下面以此類推
->setCellValue('A'.$key, $val['A'])
->setCellValue('B'.$key, $val['B'])
->setCellValue('C'.$key, $val['C']);
}
$Excel->getActiveSheet()->setTitle('export');
$Excel->setActiveSheetIndex(0);
$name='example_export.xlsx';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename='.$name);
header('Cache-Control: max-age=0');
$ExcelWriter = \PHPExcel_IOFactory::createWriter($Excel, 'Excel2007');
$ExcelWriter->save('php://output');
exit;
}
導出的 example_export.xlsx 如圖:
右鍵 -- 屬性:

參考:
