yii框架實現phpexcel匯入匯出
阿新 • • 發佈:2018-11-02
yii框架實現phpexcel匯入匯出
首先進行phpexcel安裝
網上有很多擴充套件安裝,這裡就不介紹了,可以通過composer安裝,也可以手動下載引入,這裡需要注意的是composer和手動下載在引用類時不太一樣,composer安裝的直接用根名稱空間即可"/PHPExcel",手動安裝需按照自己定義的引用。
一.檔案匯入
- html程式碼
<input type="file" style="" name="phone_list" />
- php程式碼
$insert = array();
$file = UploadedFile::getInstance($model , 'phone_list');
if (!$file) {
$this->backToJson(self::STATUS_ERROR,[],'上傳檔案有誤!');
}
$reader = new PHPExcel_Reader_Excel2007;//建立excel物件
$PHPExcel = $reader->load($file->tempName); //載入檔案
$currentSheet = $PHPExcel->getSheet(0); //**讀取excel檔案中的指定工作表*/
$allColumn = $currentSheet->getHighestColumn(); //**取得最大的列號*/
$allRow = $currentSheet->getHighestRow(); //**取得一共有多少行*/
$allColumn++;
for($rowIndex=1; $rowIndex<=$allRow; $rowIndex++){ //迴圈讀取每個單元格的內容。注意行從1開始,列從A開始
$item = array();
for($colIndex='A';$colIndex!=$allColumn;$colIndex++){
$addr = $colIndex.$rowIndex;
$cell = $currentSheet ->getCell($addr)->getValue();
if($cell instanceof \PHPExcel_RichText){ //富文字轉換字串
$cell = $cell->__toString();
}
$val = iconv('UTF-8', 'utf-8', $cell);
$item[] = trim($val);
}
if ($item) {
$insert[] = $item;
}
}
//這裡最後得到的insert陣列就是excel裡面的資料
二.檔案匯出
匯出比匯入簡單很多,我這裡寫的是通過瀏覽器彈出檔案儲存,如果想儲存到本地的話,可以自行修改結尾部分
$excel = new PHPExcel();
$excel->getProperties()->setCreator("測試")
->setLastModifiedBy("測試")
->setTitle('測試')
->setSubject('測試')
->setDescription('測試')
->setKeywords("excel")
->setCategory("result file");
$name = "測試檔名稱" ;//瀏覽器匯出直接寫檔名
/*以下就是對處理Excel裡的資料, 橫著取資料,主要是這一步,其他基本都不要改*/
//書寫excel頭部
$excel->setActiveSheetIndex(0)->setCellValue("A1", '名稱');
$excel->setActiveSheetIndex(0)->setCellValue("A2", 'test');
$excel->setActiveSheetIndex(0)->setCellValue("B1", '年齡');
$excel->setActiveSheetIndex(0)->setCellValue("B2", '18');
$excel->getActiveSheet()->setTitle('sheet名稱');
$excel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$name.'.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = new PHPExcel_Writer_Excel2007($excel);
$objWriter->save('php://output');//這是儲存方式,更改括號內參數即可