PhpSpreadsheet处理表格2
阅读原文时间:2023年07月15日阅读:1



ERP商品代码生成

商品代码
商品名称
规格代码
规格名称
颜色
颜色对应的编号
尺码
商品代码 规格代码 规格名称 商品名称 商品简称
Powered by 李佳,2019.9


前端提交数组,由于通过AJAX提交返回的只能是字符串,不能流类型,所以这里临时构建一个Iframe,通过iframe提交form,然后删除临时Iframe,实现流文件接收。

这里是在 thinkphp里 引入类

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

处理函数

//由数组生成表格文件
public function arr2xls(){
$sparr = input('post.sparr');
$sparr = explode(',',$sparr);
$sp2arr = array_chunk($sparr,4);

    //创建表格  
    //$spreadsheet = new Spreadsheet();  
    //通过模板生成表格  
    $inputFileName = ADDON\_PATH.'webact/static/SpMoban.xlsx';  
    $spreadsheet = \\PhpOffice\\PhpSpreadsheet\\IOFactory::load($inputFileName);

    $sheet = $spreadsheet->getActiveSheet();

    //设置第一行小标题  
    // $k = 1;  
    // $sheet->setCellValue('A'.$k, '商品代码(必填)');  
    // $sheet->setCellValue('B'.$k, '规格代码');  
    // $sheet->setCellValue('C'.$k, '规格名称');  
    // $sheet->setCellValue('D'.$k, '商品名称');  
    // $sheet->setCellValue('E'.$k, '商品简称');

    for ($i=0; $i < count($sp2arr); $i++) {  
        $sheet->setCellValue('A'.($i+2), $sp2arr\[$i\]\[0\]);  
        $sheet->setCellValue('B'.($i+2), $sp2arr\[$i\]\[1\]);  
        $sheet->setCellValue('C'.($i+2), $sp2arr\[$i\]\[2\]);  
        $sheet->setCellValue('D'.($i+2), $sp2arr\[$i\]\[3\]);  
        $sheet->setCellValue('E'.($i+2), $sp2arr\[$i\]\[3\]);  
    }  
    //设置列宽  
    $spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);  
    $spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);  
    $spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);  
    $spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);  
    $spreadsheet->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);

    header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//告诉浏览器输出07Excel文件  
    header("Content-Disposition: attachment;filename=".$sp2arr\[0\]\[0\].".xlsx");//告诉浏览器输出浏览器名称  
    header("Cache-Control: max-age=0");//禁止缓存

    $writer = new Xlsx($spreadsheet);  
    //$writer = \\PhpOffice\\PhpSpreadsheet\\IOFactory::createWriter($spreadsheet, 'xlsx');  
    $writer->save('php://output');  
}