excel文件类型:

  1. xls 是excel5
  2. xlsx是excel2007

PHP合并单元格方法

$objPHPExcel=new PHPExcel();//实例化PHPExcel类, 等同于在桌面上新建一个excel
$objSheet=$objPHPExcel->getActiveSheet();//获得当前活动单元格
$objSheet->getDefaultStyle()->getAlignment()->
setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)
->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置excel文件默认水平垂直方向居中
$objSheet->mergeCells("A2:"B2");//合并单元格

设置字体行高

$objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微软雅黑");//设置默认字体大小和格式
$objSheet->getStyle("A2:Z2")->getFont()->setSize(20)->setBold(true);//设置第二行字体大小和加粗
$objSheet->getStyle("A3:Z3")->getFont()->setSize(16)->setBold(true);//设置第三行字体大小和加粗
$objSheet->getDefaultRowDimension()->setRowHeight(30);//设置默认行高
$objSheet->getRowDimension(2)->setRowHeight(50);//设置第二行行高
$objSheet->getRowDimension(3)->setRowHeight(40);//设置第三行行高

添加背景色和边框

/**
**获取边框样式代码
**/
function getBorderStyle($color){
    $styleArray = array(
        'borders' => array(
    'outline' => array(
    'style' => PHPExcel_Style_Border::BORDER_THICK,
    'color' => array('rgb' => $color),
                ),
            ),
        );
    return $styleArray;
}
$objSheet->mergeCells("A2:B2");//合并的单元格
$objSheet->getStyle("A2:B2")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('c1b644');
//填充背景颜色
$gradeBorder=getBorderStyle("c144b1");//获取边框样式代码
$objSheet->getStyle("A2:B2")->applyFromArray($gradeBorder);//设置的边框

设置自动换行

$objSheet->getStyle("A")->getAlignment()->setWrapText(true);//设置文字自动换行
$objSheet->setCellValue("A4","姓名\n换行")->setCellValue("B4","分数");
//字符里出现\n可以自动换行

设置列的数据格式

$objSheet->getStyle("B")->
getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
//设置某列单元格格式为文本格式 ,在添加整数型数据之前 设置默认格式

foreach($info as $key=>$val){
$objSheet->setCellValue($nameIndex.$j,$val['username'])->setCellValue($scoreIndex.$j,$val['score']."21312321321321321321");//填充学生信息
//$objSheet->setCellValue($nameIndex.$j,$val['username'])->
//setCellValueExplicit("B".$j,"12321321321321312",PHPExcel_Cell_DataType::TYPE_STRING);
//填充数据信息,设置数据格式  
    $j++;
}

Excel导入案例

步骤:实例化Excel读取对象

加载Excel文件
分别为1.全部加载(全部的Sheet)。2.选择加载.(选择想要的sheet)

读取excel文件
分别为1.全部读取。2.逐行读取。

<?php 
 
header("Content-Type:text/html;charset=utf-8");
$dir=dirname(__FILE__);//找到当前脚本所在路径
require $dir."/PHPExcel/PHPExcel/IOFactory.php";//引入读取excel的类文件
$filename=$dir."/export_1.xls";
$objPHPExcel=PHPExcel_IOFactory->load($filename);//加载全部的Sheet

加载全部sheet数据方法

$objPHPExcel=$objReader->load($filename);//加载文件
$sheetCount=$objPHPExcel->getSheetCount();//获取excel文件里有多少个sheet
for($i=0;$i<$sheetCount;$i++){
    $data=$objPHPExcel->getSheet($i)->toArray();
//读取每个sheet里的数据 全部放入到数组中
    print_r($data);
}

选择sheet数据方法

foreach($objPHPExcel->getWorksheetIterator() as $sheet){//循环取sheet
//迭代的方法一个一个的去读sheet
        foreach($sheet->getRowIterator() as $row){//逐行处理
        if($row->getRowIndex()<2){
   //getRowIndex获取当前行  如果为1就跳出 从第二行开始
            continue;
        }
    foreach($row->getCellIterator() as $cell){//逐列读取
        $data=$cell->getValue();//获取单元格数据
    echo $data." ";
    }
    echo '<br/>';
    }
    echo '<br/>';
}

PHPExcel获取类型

$fileType=PHPExcel_IOFactory::identify($filename);//自动获取文件的类型提供给phpexcel用
$objReader=PHPExcel_IOFactory::createReader($fileType);//获取文件读取操作对象

加载指定Sheet

//加载指定Sheet
$sheetName=array("2年级","3年级");    
$objReader->setLoadSheetsOnly($sheetName);//只加载指定的sheet  可以为数组,也可字符串
$objPHPExcel=$objReader->load($filename);//加载文件

THINKPHP5.1导入

composer 类库 "phpoffice/phpspreadsheet": "^1.3",

    /**
     * @param Request $request
     * @throws \PhpOffice\PhpSpreadsheet\Exception
     * @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
     */
    public function import_excel(Request $request)
    {
            $file = $request->file('import');
            $path = PUBLIC_PATH . '/Public/Uploads/office/';
            $inputFile = $file->move($path, date('YmdHis'));

            $inputFileName = $path . $inputFile->getFilename();
            $inputFileType = IOFactory::identify($inputFileName);
            $reader = IOFactory::createReader($inputFileType);
            $reader->setLoadSheetsOnly(0);
            $spreadsheet = $reader->load($inputFileName);
            $data = [];
            $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
            foreach ($sheetData as $k => $v) {
                if ($k == 1) {
                    continue;
                }
                if (empty($v['A'])) {
                    continue;
                }
//            $data['name'] = $spreadsheet->getActiveSheet()->getCell("A" . $k)->getValue();
                $data['name'] = $v['A'];
                $data['sex'] = $v['B'];
                $data['xueli'] = $v['C'];
                $data['gongsi'] = $v['D'];
                $data['xinzi'] = $v['E'];
                $data['zhiwei'] = $v['F'];
                $data['time'] = date('Y-m', strtotime($v['G']));
                $data['city'] = "北京";
                $data['fuli'] = "五险一金";
                try {
                    Db::name('Jiuye')->insert($data);
                } catch (\Exception $e) {
                    $this->error($e->getMessage());
                }

            }
            @unlink($inputFileName);
            $this->success('导入成功!');
    }

具体内容、还需看官网文档,在tp5.1框架之前的示例估计现在应该过时了。

Last modification:January 4, 2020
如果觉得我的文章对你有用,请随意赞赏