PHP生成/下载表格

复制代码
        Loader::import('PHPExcel.Classes.PHPExcel');      // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use think\Loader
        $objPHPExcel = new \PHPExcel();                        // 创建对象
        $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);   // 水平居中
        $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);       // 上下居中
        $sheet = $objPHPExcel -> getActiveSheet();
        $sheet -> getColumnDimension('A')->setWidth(22);        // 设置单元格宽度
        $sheet -> getColumnDimension('B')->setWidth(15);
        $sheet -> getColumnDimension('C')->setWidth(15);
        $sheet -> getColumnDimension('D')->setWidth(20);
        $sheet -> getColumnDimension('E')->setWidth(15);
        $sheet -> getColumnDimension('F')->setWidth(20);
        $sheet -> getColumnDimension('G')->setWidth(10);
        $sheet -> getColumnDimension('H')->setWidth(40);
        $sheet->getStyle( 'A1')->getFont()->setName('Candara' );    // 设置单元格字体
        $sheet->getStyle( 'A1')->getFont()->setSize(15);            // 设置单元格字体大小
        $sheet->getStyle( 'A1')->getFont()->setBold(true);          // 字体加粗
        $sheet->getStyle( 'B1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'B1')->getFont()->setSize(15);
        $sheet->getStyle( 'B1')->getFont()->setBold(true);
        $sheet->getStyle( 'B1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'B1')->getFont()->setSize(15);
        $sheet->getStyle( 'B1')->getFont()->setBold(true);
        $sheet->getStyle( 'C1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'C1')->getFont()->setSize(15);
        $sheet->getStyle( 'C1')->getFont()->setBold(true);
        $sheet->getStyle( 'D1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'D1')->getFont()->setSize(15);
        $sheet->getStyle( 'D1')->getFont()->setBold(true);
        $sheet->getStyle( 'E1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'E1')->getFont()->setSize(15);
        $sheet->getStyle( 'E1')->getFont()->setBold(true);
        $sheet->getStyle( 'F1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'F1')->getFont()->setSize(15);
        $sheet->getStyle( 'F1')->getFont()->setBold(true);
        $sheet->getStyle( 'G1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'G1')->getFont()->setSize(15);
        $sheet->getStyle( 'G1')->getFont()->setBold(true);
        $sheet->getStyle( 'H1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'H1')->getFont()->setSize(15);
        $sheet->getStyle( 'H1')->getFont()->setBold(true);
        $sheet -> setCellValue("A1",'作业题目');
        $sheet -> setCellValue("B1",'作业名称');
        $sheet -> setCellValue("C1",'作者');
        $sheet -> setCellValue("D1",'提交时间');
        $sheet -> setCellValue("E1",'批阅人');
        $sheet -> setCellValue("F1",'批阅时间');
        $sheet -> setCellValue("G1",'得分');
        $sheet -> setCellValue("H1",'评语');
        $count = isset($list->count) ?  $list->count : $list->subject_count;
        for($row = 0; $row < $count; $row ++) {// 向单元格中插入内容
            $subjectTitle = $list->$row->subjectTitle;
            $workname = $list->$row->workname;
            $staffname = $list->$row->staffname;
            $uptime = $list->$row->uptime;
            $checkStaff = $list->$row->checkStaff;
            $checktime = $list->$row->checktime;
            $score = number_format($list->$row->score,2);
            $number = $list->$row->comment;
            $sheet -> setCellValue("A".($row+2),$subjectTitle);
            $sheet -> setCellValue("B".($row+2),$workname);
            $sheet -> setCellValue("C".($row+2),$staffname);
            $sheet -> setCellValue("D".($row+2),$uptime);
            $sheet -> setCellValue("E".($row+2),$checkStaff);
            $sheet -> setCellValue("F".($row+2),$checktime);
            $sheet -> setCellValue("G".($row+2),$score);
            $sheet -> setCellValue("H".($row+2),$number);
        }
        $sheet -> setTitle('批阅列表');

        if(!file_exists(config('upload_path').'/excel')){
            mkdir(config('upload_path').'/excel');
            chmod(config('upload_path').'/excel',0777);
        }
        (new \PHPExcel_Writer_Excel2007($objPHPExcel))->save(config('upload_path').'/excel/checklist.xls');
        $file_name = "checklist.xls";
        $contents = file_get_contents(config('upload_path').'/excel/checklist.xls');
        $file_size = filesize(config('upload_path').'/excel/checklist.xls');
        header("Content-type: application/octet-stream;charset=utf-8");
        header("Accept-Ranges: bytes");
        header("Accept-Length: $file_size");
        header("Content-Disposition: attachment; filename=".$file_name);
        exit($contents);
复制代码



二、不用生成 Excel 文件就强制下载:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=工单" . "_" . $localtime . ".xls ");
header("Content-Transfer-Encoding: binary ");

请求头解释:
1、header("Pragma: public");
Pragma头域用来包含实现特定的指令
Pragma: public 意思是 响应可被任何缓存区缓存。 
关于Pragma:no-cache,跟Cache-Control: no-cache相同。Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。因此,Pragma: no-cache可以应用到http 1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1.

2、header("Expires: 0");

     header("Expires: 0");  的意思是缓存已过期

    Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)     的页面,我们可以使用Expires实体报头域指定页面过期时间。例:Expires:Thu,15 Sep 2006 16:23:12 GMT

   HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。如:为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为 0

3、header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

     header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 的意思是强制页面不缓存,post-check=0, pre-check=0这两个 是 IE 5.0才有的防cache声明

Cache-Control。它用来指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache -Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max- stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。我们来说说响应消息,因为 它是服务器发出的,对于客户端和Cache System都有非常重要的意义:
Public    指示响应可被任何缓存区缓存。
Private    指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache    指示请求或响应消息不能缓存
no-store    用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存
max-age    指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
no-transform     不允许转换存储系统
must-revalidate  使得客户端再次浏览当前页时必须发送相关 HTTP 头信息到服务器进行验证,然后才决定是否加载客户端本地 cache

4、header("Content-Type: application/force-download");

    header("Content-Type: application/force-download"); 的意思是 强制下载

5、header("Content-Type: application/octet-stream");

   不知道下载文件的类型时使用,采用二进制流

6、header("Content-Disposition: attachment;filename=附件名.xls ");

     意思是 类型为附件, 附件名为 :附件名.xls


7、header("Content-Transfer-Encoding: binary ");

意思是采用二进制进行传输

Transfer-Encoding 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式

三、用数据生成 excel 并下载(不用生成临时文件)

复制代码
<?php
include_once "phpexcel/PHPExcel.php";
$cfg_columns = array( 'date' => array( 'name' => '日期', 'type' => 'label', 'width' => 100 ), 'name' => array( 'name' => '姓名', 'type' => 'label', 'width' => 100 ), 'dept_name' => array( 'name' => '部门', 'type' => 'label', 'width' => 100 ), ); $list = array( 0 => array( 'date' => '2017-12-01 10:32:45', 'name' => '张三', 'dept_name' => '研发部', ), 1 => array( 'date' => '2017-12-02 10:32:45', 'name' => '李四', 'dept_name' => '客服部', ), 2 => array( 'date' => '2017-12-03 10:32:45', 'name' => '王五', 'dept_name' => '人力资源部', ), ); $filename = 'test.xls'; header('Pragma:public'); header('Content-Type:application/x-msexecl;name="'.$filename.'"'); header('Content-Disposition:inline;filename="'.$filename.'"'); $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet(0)->mergeCells('B1:D1'); $export_time = date('Y-m-d H:i:s'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '导出时间:'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1', $export_time); $cols = 'A'; foreach ($cfg_columns as $val){ $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cols++.'2',$val['name']); } //第三行, 输出详细数据 $rows = 3; foreach ($list as $fields){ $cols = 'A'; //按cfg_column的配置项导出 foreach ($cfg_columns as $k => $val){ if(empty( $fields[$k])){ $objPHPExcel->getActiveSheet()->setCellValue($cols++.$rows, 0); }else{ $objPHPExcel->getActiveSheet()->setCellValue($cols++.$rows, $fields[$k]); } } //end foreach ($cfg_column as $key => $val) $rows ++; } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit;
复制代码

 如果遇到需要导出的表格包含复选框等各种格式,可以先生成生个视图,在渲染视图$this->display() 之前使用header()下载,下载的文件名为 xxx.xls ,就可以将整个表格下载到excel啦。

读取 excel 文件内容,并变成一个由 , 分割的字符串

复制代码
include_once "phpexcel/PHPExcel.php";
$filePath = $_FILES['file']['tmp_name'];
$PHPExcel = new PHPExcel();
/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
    $PHPReader = new PHPExcel_Reader_Excel5();
    if(!$PHPReader->canRead($filePath)){
        echo 'no Excel';
        return ;
    }
}

$PHPExcel = $PHPReader->load($filePath);
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
/**从第二行开始输出,因为excel表中第一行为列名*/
$temStr = "";
for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
    /**从第A列开始输出*/
    for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++) {
        $temStr .= $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();
        $temStr .=',';
    }
}
$temStr = rtrim($temStr,',');
复制代码
 
复制代码
        Loader::import('PHPExcel.Classes.PHPExcel');      // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use think\Loader
        $objPHPExcel = new \PHPExcel();                        // 创建对象
        $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);   // 水平居中
        $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);       // 上下居中
        $sheet = $objPHPExcel -> getActiveSheet();
        $sheet -> getColumnDimension('A')->setWidth(22);        // 设置单元格宽度
        $sheet -> getColumnDimension('B')->setWidth(15);
        $sheet -> getColumnDimension('C')->setWidth(15);
        $sheet -> getColumnDimension('D')->setWidth(20);
        $sheet -> getColumnDimension('E')->setWidth(15);
        $sheet -> getColumnDimension('F')->setWidth(20);
        $sheet -> getColumnDimension('G')->setWidth(10);
        $sheet -> getColumnDimension('H')->setWidth(40);
        $sheet->getStyle( 'A1')->getFont()->setName('Candara' );    // 设置单元格字体
        $sheet->getStyle( 'A1')->getFont()->setSize(15);            // 设置单元格字体大小
        $sheet->getStyle( 'A1')->getFont()->setBold(true);          // 字体加粗
        $sheet->getStyle( 'B1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'B1')->getFont()->setSize(15);
        $sheet->getStyle( 'B1')->getFont()->setBold(true);
        $sheet->getStyle( 'B1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'B1')->getFont()->setSize(15);
        $sheet->getStyle( 'B1')->getFont()->setBold(true);
        $sheet->getStyle( 'C1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'C1')->getFont()->setSize(15);
        $sheet->getStyle( 'C1')->getFont()->setBold(true);
        $sheet->getStyle( 'D1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'D1')->getFont()->setSize(15);
        $sheet->getStyle( 'D1')->getFont()->setBold(true);
        $sheet->getStyle( 'E1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'E1')->getFont()->setSize(15);
        $sheet->getStyle( 'E1')->getFont()->setBold(true);
        $sheet->getStyle( 'F1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'F1')->getFont()->setSize(15);
        $sheet->getStyle( 'F1')->getFont()->setBold(true);
        $sheet->getStyle( 'G1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'G1')->getFont()->setSize(15);
        $sheet->getStyle( 'G1')->getFont()->setBold(true);
        $sheet->getStyle( 'H1')->getFont()->setName('Candara' );
        $sheet->getStyle( 'H1')->getFont()->setSize(15);
        $sheet->getStyle( 'H1')->getFont()->setBold(true);
        $sheet -> setCellValue("A1",'作业题目');
        $sheet -> setCellValue("B1",'作业名称');
        $sheet -> setCellValue("C1",'作者');
        $sheet -> setCellValue("D1",'提交时间');
        $sheet -> setCellValue("E1",'批阅人');
        $sheet -> setCellValue("F1",'批阅时间');
        $sheet -> setCellValue("G1",'得分');
        $sheet -> setCellValue("H1",'评语');
        $count = isset($list->count) ?  $list->count : $list->subject_count;
        for($row = 0; $row < $count; $row ++) {// 向单元格中插入内容
            $subjectTitle = $list->$row->subjectTitle;
            $workname = $list->$row->workname;
            $staffname = $list->$row->staffname;
            $uptime = $list->$row->uptime;
            $checkStaff = $list->$row->checkStaff;
            $checktime = $list->$row->checktime;
            $score = number_format($list->$row->score,2);
            $number = $list->$row->comment;
            $sheet -> setCellValue("A".($row+2),$subjectTitle);
            $sheet -> setCellValue("B".($row+2),$workname);
            $sheet -> setCellValue("C".($row+2),$staffname);
            $sheet -> setCellValue("D".($row+2),$uptime);
            $sheet -> setCellValue("E".($row+2),$checkStaff);
            $sheet -> setCellValue("F".($row+2),$checktime);
            $sheet -> setCellValue("G".($row+2),$score);
            $sheet -> setCellValue("H".($row+2),$number);
        }
        $sheet -> setTitle('批阅列表');

        if(!file_exists(config('upload_path').'/excel')){
            mkdir(config('upload_path').'/excel');
            chmod(config('upload_path').'/excel',0777);
        }
        (new \PHPExcel_Writer_Excel2007($objPHPExcel))->save(config('upload_path').'/excel/checklist.xls');
        $file_name = "checklist.xls";
        $contents = file_get_contents(config('upload_path').'/excel/checklist.xls');
        $file_size = filesize(config('upload_path').'/excel/checklist.xls');
        header("Content-type: application/octet-stream;charset=utf-8");
        header("Accept-Ranges: bytes");
        header("Accept-Length: $file_size");
        header("Content-Disposition: attachment; filename=".$file_name);
        exit($contents);
复制代码



二、不用生成 Excel 文件就强制下载:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=工单" . "_" . $localtime . ".xls ");
header("Content-Transfer-Encoding: binary ");

请求头解释:
1、header("Pragma: public");
Pragma头域用来包含实现特定的指令
Pragma: public 意思是 响应可被任何缓存区缓存。 
关于Pragma:no-cache,跟Cache-Control: no-cache相同。Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。因此,Pragma: no-cache可以应用到http 1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1.

2、header("Expires: 0");

     header("Expires: 0");  的意思是缓存已过期

    Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)     的页面,我们可以使用Expires实体报头域指定页面过期时间。例:Expires:Thu,15 Sep 2006 16:23:12 GMT

   HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。如:为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为 0

3、header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

     header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 的意思是强制页面不缓存,post-check=0, pre-check=0这两个 是 IE 5.0才有的防cache声明

Cache-Control。它用来指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache -Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max- stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。我们来说说响应消息,因为 它是服务器发出的,对于客户端和Cache System都有非常重要的意义:
Public    指示响应可被任何缓存区缓存。
Private    指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache    指示请求或响应消息不能缓存
no-store    用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存
max-age    指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
no-transform     不允许转换存储系统
must-revalidate  使得客户端再次浏览当前页时必须发送相关 HTTP 头信息到服务器进行验证,然后才决定是否加载客户端本地 cache

4、header("Content-Type: application/force-download");

    header("Content-Type: application/force-download"); 的意思是 强制下载

5、header("Content-Type: application/octet-stream");

   不知道下载文件的类型时使用,采用二进制流

6、header("Content-Disposition: attachment;filename=附件名.xls ");

     意思是 类型为附件, 附件名为 :附件名.xls


7、header("Content-Transfer-Encoding: binary ");

意思是采用二进制进行传输

Transfer-Encoding 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式

三、用数据生成 excel 并下载(不用生成临时文件)

复制代码
<?php
include_once "phpexcel/PHPExcel.php";
$cfg_columns = array( 'date' => array( 'name' => '日期', 'type' => 'label', 'width' => 100 ), 'name' => array( 'name' => '姓名', 'type' => 'label', 'width' => 100 ), 'dept_name' => array( 'name' => '部门', 'type' => 'label', 'width' => 100 ), ); $list = array( 0 => array( 'date' => '2017-12-01 10:32:45', 'name' => '张三', 'dept_name' => '研发部', ), 1 => array( 'date' => '2017-12-02 10:32:45', 'name' => '李四', 'dept_name' => '客服部', ), 2 => array( 'date' => '2017-12-03 10:32:45', 'name' => '王五', 'dept_name' => '人力资源部', ), ); $filename = 'test.xls'; header('Pragma:public'); header('Content-Type:application/x-msexecl;name="'.$filename.'"'); header('Content-Disposition:inline;filename="'.$filename.'"'); $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet(0)->mergeCells('B1:D1'); $export_time = date('Y-m-d H:i:s'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '导出时间:'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1', $export_time); $cols = 'A'; foreach ($cfg_columns as $val){ $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cols++.'2',$val['name']); } //第三行, 输出详细数据 $rows = 3; foreach ($list as $fields){ $cols = 'A'; //按cfg_column的配置项导出 foreach ($cfg_columns as $k => $val){ if(empty( $fields[$k])){ $objPHPExcel->getActiveSheet()->setCellValue($cols++.$rows, 0); }else{ $objPHPExcel->getActiveSheet()->setCellValue($cols++.$rows, $fields[$k]); } } //end foreach ($cfg_column as $key => $val) $rows ++; } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit;
复制代码

 如果遇到需要导出的表格包含复选框等各种格式,可以先生成生个视图,在渲染视图$this->display() 之前使用header()下载,下载的文件名为 xxx.xls ,就可以将整个表格下载到excel啦。

读取 excel 文件内容,并变成一个由 , 分割的字符串

复制代码
include_once "phpexcel/PHPExcel.php";
$filePath = $_FILES['file']['tmp_name'];
$PHPExcel = new PHPExcel();
/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
    $PHPReader = new PHPExcel_Reader_Excel5();
    if(!$PHPReader->canRead($filePath)){
        echo 'no Excel';
        return ;
    }
}

$PHPExcel = $PHPReader->load($filePath);
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
/**从第二行开始输出,因为excel表中第一行为列名*/
$temStr = "";
for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
    /**从第A列开始输出*/
    for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++) {
        $temStr .= $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();
        $temStr .=',';
    }
}
$temStr = rtrim($temStr,',');
复制代码

猜你喜欢

转载自www.cnblogs.com/tyblwmbs/p/10811356.html