許多網(wǎng)站需要實(shí)現(xiàn)表格數(shù)據(jù)的導(dǎo)入導(dǎo)出功能,而PHP作為一種極其流行的Web編程語言,自然也有許多現(xiàn)成的插件用以處理Excel文件。其中PHPExcel是一個(gè)非常常用的操作Excel文件的插件,它可以實(shí)現(xiàn)對Excel文件的直接讀寫操作,這篇文章我們將深入淺出的介紹一下它的使用方式。
安裝
在使用PHPExcel之前,我們需要先安裝PHPExcel到我們的程序中。PHPExcel是一款由PHPOffice團(tuán)隊(duì)開發(fā)的插件,可以在PHPOffice的Github中下載到。我們推薦使用Composer安裝PHPExcel,只需在命令行終端中執(zhí)行:
composer require phpoffice/phpexcel
即可安裝PHPExcel。
讀取Excel文件
PHPExcel的使用方法很簡單,如果我們要讀取Excel文件的數(shù)據(jù),可以通過以下代碼完成操作:
$filepath = 'testdata.xlsx'; $fileType = \PHPExcel_IOFactory::identify($filepath); $objReader = \PHPExcel_IOFactory::createReader($fileType); if (!$objPHPExcel = $objReader->load($filepath)) { die('讀取文件失敗'); } $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
上述代碼中,我們首先定義要讀取的Excel文件路徑,然后通過PHPExcel_IOFactory::identify()方法獲取Excel文件的格式,然后通過PHPExcel_IOFactory::createReader()方法創(chuàng)建一個(gè)PHPExcel_Reader_IReader對象,最后通過load()方法讀取Excel并將結(jié)果返回到$objPHPExcel對象中。
接下來,我們使用$getActiveSheet()方法獲取Excel文件中的第一個(gè)工作表,再使用$toArray()方法將工作表轉(zhuǎn)換為數(shù)組格式,這樣我們就能夠讀取Excel中的數(shù)據(jù)了。
例如,如果我們想要讀取Excel文件中第一行第一列的數(shù)據(jù),可以通過如下代碼實(shí)現(xiàn):
$data = $sheetData[1]['A'];
創(chuàng)建Excel文件
如果我們要?jiǎng)?chuàng)建一個(gè)Excel文件,那么需要先進(jìn)行以下幾個(gè)步驟:
- 創(chuàng)建一個(gè)PHPExcel對象
- 定義Excel格式,這里我們用Xlsx作為例子
- 設(shè)置Excel文檔屬性
- 設(shè)置標(biāo)題行內(nèi)容
- 按照需要設(shè)置Excel內(nèi)容
- 保存Excel文件
例如,要?jiǎng)?chuàng)建一個(gè)包含兩列,10行數(shù)據(jù)的Excel文件,格式如下所示:
序號 | 名稱 |
---|---|
1 | phpexcel |
2 | phpword |
3 | phpspreadsheet |
4 | phppowerpoint |
5 | phpdocumentor |
6 | phpmailer |
7 | phpunit |
8 | phpcs |
9 | phpdepend |
10 | phpmd |
則可以通過如下代碼實(shí)現(xiàn)創(chuàng)建并保存Excel文件:
// 創(chuàng)建對象 $objPHPExcel = new \PHPExcel(); // 設(shè)置格式 $exceltype = new \PHPExcel_Writer_Excel2007($objPHPExcel); // 設(shè)置文件屬性 $objPHPExcel->getProperties()->setTitle("excel creation") ->setSubject("phpExcel") ->setDescription("test"); // 設(shè)置標(biāo)題行 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '序號') ->setCellValue('B1', '名稱'); // 填寫內(nèi)容 $data = array( array("1", "phpexcel"), array("2", "phpword"), array("3", "phpspreadsheet"), array("4", "phppowerpoint"), array("5", "phpdocumentor"), array("6", "phpmailer"), array("7", "phpunit"), array("8", "phpcs"), array("9", "phpdepend"), array("10", "phpmd") ); $i = 2; foreach ($data as $item) { $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A' . $i, $item[0]) ->setCellValue('B' . $i, $item[1]); $i++; } // 保存文件 $filename = "test.xlsx"; $savePath = './'; $fileurl = $savePath . $filename; $exceltype->save($fileurl); echo '保存文件成功!';
總結(jié)
本文通過幾個(gè)實(shí)例,介紹了PHPExcel的讀寫Excel文件的操作,對于經(jīng)常需要操作Excel文件的開發(fā)人員而言,掌握PHPExcel的使用是不可或缺的。同時(shí)還需要注意避免PHPExcel對大數(shù)據(jù)文件的使用,避免內(nèi)存溢出,也需要注意PHPExcel兼容性問題。