PHP 导出Excle

第一步:引入类库,下面的没有用到的就直接注释就好了,用的是PhpOffice的库

use app\admin\model\MyFund as MyFundModel;
use app\common\controller\Backend;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Reader\Csv;
use PhpOffice\PhpSpreadsheet\Reader\Xls;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use think\Db;
use think\Exception;
use think\exception\PDOException;
use think\exception\ValidateException;
use think\Loader;
use \PhpOffice\PhpSpreadsheet\Spreadsheet;
use \PhpOffice\PhpSpreadsheet\IOFactory;//use \PHPExcel_Style_NumberFormat;    //设置列的格式==>>设置文本格式

第二步:导入代码

/*导出*/
public function exports(){

    $adminList=\app\admin\model\Orders::where(['isjieyong'=>1])->select();
    $newExcel = new Spreadsheet();  //创建一个新的excel文档
    $objSheet = $newExcel->getActiveSheet();  //获取当前操作sheet的对象
    //设置宽度为true,不然太窄了
    $newExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
    $newExcel->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);

    //设置第一栏的标题
    $objSheet
        ->setCellValue('A1', '会员id')
        ->setCellValue('B1', '保险名称')
        ->setCellValue('C1', '订单编号')
        ->setCellValue('D1', '保单号')
        ->setCellValue('E1', '生效日期')
        ->setCellValue('F1', '终止日期')
        ->setCellValue('G1', '保费')
        ->setCellValue('H1', '保额')
        ->setCellValue('I1', '比例')
        ->setCellValue('J1', '缴费年限')
        ->setCellValue('K1', '投保人信息')
        ->setCellValue('L1', '被保人信息')
        ->setCellValue('M1', '受益人');

    //第二行起,每一行的值,setCellValueExplicit是用来导出文本格式的。
    //->setCellValueExplicit('C' . $k, $val['admin_password']PHPExcel_Cell_DataType::TYPE_STRING),可以用来导出数字不变格式
    foreach ($adminList as $k => $val) {
        $k = $k + 2;
        $mobileinfo=\app\admin\model\User::get($val['user_id']);
        $baoxianinfo=\app\admin\model\Maindata::get($val['maindata_id']);
        $objSheet
            ->setCellValue('A' . $k, $mobileinfo['mobile'])
            ->setCellValue('B' . $k, $baoxianinfo['back_product_name'])
            ->setCellValue('C' . $k, $val['order_no'])
            ->setCellValue('D' . $k, $val['gua_slip'])
            ->setCellValue('E' . $k,$val['effective_date'])
            ->setCellValue('F' . $k, $val['end_time'])
            ->setCellValue('G' . $k, $val['coverage'])
            ->setCellValue('H' . $k, $val['sum_insured'])
            ->setCellValue('I' . $k, $val['ratio'])
            ->setCellValue('J' . $k, $val['payment_year'])
            ->setCellValue('K' . $k, json_encode($val['insure_info'],JSON_UNESCAPED_UNICODE))
            ->setCellValue('L' . $k, json_encode($val['insured_info'],JSON_UNESCAPED_UNICODE))
            ->setCellValue('M' . $k, $val['beneficiary']);
    }
    $this->downloadExcel($newExcel, date('YmsHis',time()).time(), 'Xls');
}

第三步:公共文件,用来传入xls并下载

public function downloadExcel($newExcel, $filename, $format)
{
    // $format只能为 Xlsx 或 Xls
    if ($format == 'Xlsx') {
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    } elseif ($format == 'Xls') {
        header('Content-Type: application/vnd.ms-excel');
    }

    header("Content-Disposition: attachment;filename="
        . $filename . date('Y-m-d') . '.' . strtolower($format));
    header('Cache-Control: max-age=0');
    $objWriter = IOFactory::createWriter($newExcel, $format);

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

    exit;
}
上一篇:如何使用phpmyadmin将Excel文件导入mysql数据库


下一篇:ruby 操作excel Spreadsheet