tp5使用PHPExcel

PHPExcel使用

一:引入

tp5.0tp5.1

  1composer方式

    a:根目錄下執行:composer require phpoffice/phpexcelphp

    b:引入(可new \PHPExcel()直接使用):app

      use PHPExcel_IOFactory;composer

      use PHPExcel;字體

  2:下載引入方式

    a:下載PHPExcelui

      地址:https://pan.baidu.com/s/1gfrEt7tz2uwOrubeHcuorgspa

      提取碼:zxcvexcel

    b:放到項目根目錄extend文件夾下,目錄結構以下:orm

       

    c:引入(可new \PHPExcel()直接使用)對象

二:導出

  預置模板方式(接下方導出):

//導出的數據blog

$data[] = ['aa'=>'第一列', 'bb'=>'第二列', 'cc'=>'第三列', 'dd'=>'第四列'];

$data[] = ['aa'=>'第一列', 'bb'=>'第二列', 'cc'=>'第三列', 'dd'=>'第四列'];

//模板文件路徑(可更改文件內定義表頭與格式,第一行標題,第二行表頭)

$file = EXTEND_PATH . 'files/excel.xls';

//加載模板

$phpexcel=\PHPExcel_IOFactory::createReader("Excel2007")->load($file);

$objActSheet = $phpexcel->getActiveSheet();

//寫入標題

$objActSheet->setCellValue('A1', '標題');

//循環寫入數據

$i = 0;

foreach ($data as $item) {

$row = 3 + $i;

$objActSheet->setCellValue('A' . $row, $i + 1);

$objActSheet->setCellValue('B'.$row,$item['aa']);

$objActSheet->setCellValue('C'.$row,$item['bb']);   

$objActSheet->setCellValue('D'.$row,$item['cc']);

$objActSheet->setCellValue('E'.$row,$item['dd']);

$objActSheet->getRowDimension($row)->setRowHeight(40);//行高40

$i++;

}

生成方式(接下方導出):

//表頭

$head = ['aa'=>'第一列', 'bb'=>'第二列', 'cc'=>'第三列', 'dd'=>'第四列'];

//導出數據

$data[] = ['aa'=>'aa', 'bb'=>'bb', 'cc'=>'cc', 'dd'=>'dd'];

$data[] = ['aa'=>'aa', 'bb'=>'bb', 'cc'=>'cc', 'dd'=>'dd'];

//建立新的PHPExcel對象

$phpexcel= new \PHPExcel();

$objProps = $phpexcel->getProperties();

//設置表頭

$key = ord("A");

$key2 = ord("A");

$colum2 = '';

$objActSheet = $phpexcel->getActiveSheet();

foreach ($head as $k => $v) {

$colum = chr($key);

$objActSheet->setCellValue($colum2 . $colum . '2', $v);

if ($key < 90) {

  $key += 1;

} else {

  $key = ord("A");

  $colum2 = chr($key2);

  $key2++;

}

}

//標題

$objActSheet->setCellValue('A1', '標題')->mergeCells('A1:' . $colum . 1);

$row= 2;

foreach ($data as $rows) { //行寫入

$span = ord("A");

$span2 = ord("A");

$j2 = '';

$row++;

foreach ($head as $k=>$value) {// 列寫入

$j = chr($span);

$objActSheet->setCellValueExplicit($j2 . $j . $row, isset($rows[$k])?$rows[$k]:'', \PHPExcel_Cell_DataType::TYPE_STRING);

if ($span < 90) {

  $span += 1;

} else {

  $span = ord("A");

  $j2 = chr($span2);

  $span2++;

}

}

}

導出:

$fileName =  'excle.xls';

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment;filename=' . $fileName);

header('Cache-Control: max-age=0');

$objWriter = \PHPExcel_IOFactory::createWriter($phpexcel,'Excel2007');

$objWriter->save('php://output');

格式:

//建立新的工做表

$phpexcel->createSheet(); 

//選擇工做表
$phpexcel->setActiveSheetIndex(0);

//重命名工做表

$phpexcel->getActiveSheet()->setTitle('Simple');

//單元格合併並設置值

$phpexcel->getActiveSheet()->setCellValue('A1', '值')->mergeCells('A1:E1' );

//設置字體

$phpexcel->getActiveSheet()->getStyle('A3:S' . $row )->getFont()->setName('Candara'); 

//設置字

$phpexcel->getActiveSheet()->getStyle('A3:S' . $row )->getFont()->setSize(12);

//字體加粗

$phpexcel->getActiveSheet()->getStyle('A1:S'. $row )->getFont()->setBold(true);

//行高度

$phpexcel->getActiveSheet()->getRowDimension($row)->setRowHeight(40);

//列寬度

$phpexcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);//自適應

$phpexcel->getActiveSheet()->getColumnDimension('A')->setWidth(300);

//表格畫線

$styleArray=array('borders'=>array('allborders'=>array('style'=>\PHPExcel_Style_Border::BORDER_THIN,),),);

$phpexcel->getActiveSheet()->getStyle('A1:S' . $row)->applyFromArray($styleArray);

//文字居中

$phpexcel->getActiveSheet()->getStyle('A1:S' .$row)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

//文字靠右

$phpexcel->getActiveSheet()->getStyle('A' .$row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);

//鎖定(以B3單元格爲分界線,上方和左方都會鎖定

$phpexcel->getActiveSheet()->freezePane('B3');

//設置下拉

$objValidation=$phpexcel->getActiveSheet()->getCell('C1' )->getDataValidation();

$objValidation->setType(\PHPExcel_Cell_DataValidation::TYPE_LIST)                    

        ->setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_INFORMATION )

                        ->setAllowBlank(false)

                        ->setShowInputMessage(true)

                        ->setShowErrorMessage(true)

                        ->setShowDropDown(true)

                        ->setErrorTitle('輸入的值有誤')

                        ->setError('您輸入的值不在下拉框列表內.')

                        ->setPromptTitle("標題")

                        ->setPrompt("備註")

                        ->setFormula1("選項一,選項二");

三:導入

$file = '路徑';

$phpexcel = \PHPExcel_IOFactory::load($file);

$phpexcel->setActiveSheetIndex(0);//指定第一個工做表

$data= $phpexcel->getActiveSheet()->toArray(null, true, true, true);

相關文章
相關標籤/搜索