Heim >PHP-Framework >Denken Sie an PHP >Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

青灯夜游
青灯夜游nach vorne
2021-09-15 19:59:187180Durchsuche

Wie importiere ich eine Excel-Tabelle mit Bildern in PHP? Wie exportiere ich Bilder nach Excel? Wie definiere ich Stile für exportiertes Excel, um es schöner zu machen? Der folgende Artikel wird Ihnen helfen, das Problem einzeln zu lösen. Ich hoffe, er wird Ihnen hilfreich sein!

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

Excel ist ein häufig verwendetes Tool zur Datenerfassung und Statistik. Um papierlos zu arbeiten oder in die Cloud zu wechseln, müssen Bürodaten normalerweise vom Bürocomputer auf die Plattform migriert werden. Oder das Herunterladen der Daten auf die Plattform zur Nutzung durch Nicht-Entwickler erfordert zwangsläufig den Import und Export von Daten, und das Datenformat muss Excel sein.

In diesem Artikel werden die tatsächlichen Entwicklungsanforderungen zusammengefasst und der Import und Export von Excel während des Entwicklungsprozesses zusammengefasst. Das beteiligte Entwicklungsframework:

Bei der Bereitstellung ist es für Daten mit vielen Bildern in Excel erforderlich, das Timeout oder die Laufzeit zu verlängern und die Upload-Größenbeschränkung zu erhöhen

Code-Warehouse: https://github.com/QuintionTang/crayon-thinkphp

Import

Datenimport: Bevor Sie beginnen, müssen Sie das Format der importierten Daten definieren und das vorgeschriebene Formatprogramm strikt befolgen, um die Daten korrekt zu analysieren. Der übliche Datenimport besteht nur aus einfachen Textdaten. In diesem Artikel werden Daten mit Bildern in Excel importiert, um den Importbedarf so weit wie möglich abzudecken.

Vorlage

Die Vorlage ist die Grundlage für den Datenimport. Nachfolgend wird eine einfache Datenvorlage mit folgendem Format definiert:

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

Bei Text und Bildern besteht die erste Wahl zum Importieren von Daten darin, eine Excel-Datei zu lesen. Daher muss auch die Datei hochgeladen werden. Nachdem die Datei erfolgreich hochgeladen wurde, erkennen Sie zunächst die Bildspalte und sehen Sie sich den Code direkt an:

    public function excel_import(){
            $usedfor = empty($_GET['usedfor']) ? 'picture' : trim($_GET['usedfor']);
            $used_for = $usedfor;
            import('ORG.Net.UploadFile');
            $upload = $this->_upload_init(new \Org\Net\UploadFile(),$usedfor);// 实例化上传类
            $attach = array();
            $attachment = array();
            $attach["success"] = 0;
            $info = "";
            if(!$upload->upload()) { // 上传错误提示错误信息
                $upload_error = $upload->getErrorMsg();
                $attach["msg"] = $upload_error;
            }else{ // 上传成功 获取上传文件信息
                $info =  $upload->getUploadFileInfo();
            }
            // 上传成功后开始处理
            if(is_array($info)){
                $info = $info[0];
                // PHPExcel 类引入
                import("Org.Util.PHPExcel");
                import("Org.Util.PHPExcel.Reader.Excel5");
                import("Org.Util.PHPExcel.Reader.Excel2007");
                
                import("Org.Util.PHPExcel.IOFactory.php");

                $filePath = $info["savepath"] . $info["savename"];
                $input_file_type = \PHPExcel_IOFactory::identify($filePath);

                // 开始读取Excel数据
                $objExcel = new \PHPExcel();

                $objReader = \PHPExcel_IOFactory::createReader($input_file_type);
                // 加载Excel文件
                $objPHPExcel = $objReader->load($filePath); 
                $objWorksheet = $objPHPExcel->getActiveSheet();
                $data = $objWorksheet->toArray();
                $attach_path = C('attach_path');
                $subpath = date('YmdHm', time());
                // Excel图片存储路径
                $imageFileRealPath = $attach_path . "excel_img/".$subpath ."/" ; 
                mkdirs($imageFileRealPath);
                $i = 0;
                $rebarRows = array();
                // 下面开始处理图片
                foreach ($objWorksheet->getDrawingCollection() as $img) {
                    list($startColumn, $startRow) = \PHPExcel_Cell::coordinateFromString($img->getCoordinates()); //获取图片所在行和列
                    $imageFileName = uniqid();
                    try {
                        switch($img->getExtension()) {
                            case 'jpg':
                            case 'jpeg':
                                $imageFileName .= '.jpeg';
                                $source = imagecreatefromjpeg($img->getPath());
                                imagejpeg($source, $imageFileRealPath.$imageFileName,100);
                                break;
                            case 'gif':
                                $imageFileName .= '.gif';
                                $source = imagecreatefromgif($img->getPath());
                                $width = imagesx($source);
                                $height = imagesy($source);
                                if (function_exists("imagecreatetruecolor")) {
                                    $newImg = imagecreatetruecolor($width, $height);
                                    /* --- 用以处理缩放png图透明背景变黑色问题开始 --- */
                                    $color = imagecolorallocate($newImg,255,255,255);
                                    imagecolortransparent($newImg,$color);
                                    imagefill($newImg,0,0,$color);
                                    ImageCopyResampled($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                } else {
                                    $newImg = imagecreate($width, $height);
                                    ImageCopyResized($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                }
                                imagejpeg($source, $imageFileRealPath.$imageFileName,100);
                                break;
                            case 'png':
                                $imageFileName .= '.png';
                                $source = imagecreatefrompng($img->getPath());
                                $width = imagesx($source);
                                $height = imagesy($source);
                                if (function_exists("imagecreatetruecolor")) {
                                    $newImg = imagecreatetruecolor($width, $height);
                                    
                                    /* --- 用以处理缩放png图透明背景变黑色问题开始 --- */
                                    $color = imagecolorallocate($newImg,255,255,255);
                                    imagecolortransparent($newImg,$color);
                                    imagefill($newImg,0,0,$color);
                                    ImageCopyResampled($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                } else {
                                    $newImg = imagecreate($width, $height);
                                    ImageCopyResized($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                }
                                imagejpeg($newImg, $imageFileRealPath.$imageFileName,100);
                                break;
                        }
                        $startColumn = $this->ABC2decimal($startColumn);
                        $data[$startRow-1][$startColumn] = $imageFileRealPath . $imageFileName;
                    } catch (\Throwable $th) {
                        throw $th;
                    }
                    
                }
                $rowsData = array();
                foreach ($data as $key => $rowData) {
                    $serial = safty_value($rowData[0],0,'intval'); // 第一列 序号
                    $title = safty_value($rowData[1],'','trim'); // 第二列 名称
                    $logo_save_path = safty_value($rowData[2],'','trim');  // logo图形保存路径
                    $remark = safty_value($rowData[3],'','trim');  //备注

                    if ($serial >0 && $logo_save_path!=="" && $title!==""){

                        array_push($rowsData,array(
                            "serial"=>$serial,
                            "title"=>$title,
                            "logo_path"=>$logo_save_path,
                            "remark"=>$remark
                        ));
                            
                    }
                }
                // 将导入的数据生成文件缓存
                $this->update_excel_data($rowsData); 
                $upload_result = array(
                    "count" => count($rowsData),
                    "success" => 1,
                    "state"=>"SUCCESS"
                );
                
            } else {
                $upload_result = array(
                    "message" => "上传失败!",
                    "success" => 0
                );
            }
            echo json_encode($upload_result);
    }

Der folgende Vorgang ist wie folgt:

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

Wählen Sie die Datei aus zum Hochladen und Importieren. Nach erfolgreichem Export wird die aktuelle Listenseite angezeigt und aktualisiert.

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

Liste nach erfolgreichem Export:

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

Zu diesem Zeitpunkt ist der Datenimport abgeschlossen.

Unzureichend, die importierte Excel-Datei wurde nach dem Importieren nicht verarbeitet, daher wird empfohlen, sie zu löschen

Exportieren

Jetzt exportieren wir die oben genannten Daten und exportieren die Formatdefinition von Excel, die Sie benötigen Definieren Sie zuerst den Header:

$first_cells = array(
    array("serial","序号"),
    array("title","名称"),
    array("logo","logo"),
    array("remark","描述")
);

Der nächste Schritt besteht darin, die Daten gemäß dem Format des Tabellenkopfes wie folgt zu kapseln:

foreach ($excel_data as $key => $row_info) {
    array_push($first_rows_data,array(
        "serial"=>$row_info['serial'],
        "title"=>$row_info['title'],
        "logo"=>$row_info['logo_path'],
        "remark"=>$row_info['remark']
    ));
}

An diesem Punkt ist die Datenkapselung abgeschlossen, der vollständige Code lautet wie folgt :

    public function export(){
        $excel_detail = array(
            "author"=>"devpoint",
            "date"=>join(" ",$artifacts_full)
        );
        // 定义导出Excel表格信息
        $sheets = array(); // Excel表信息,一维代表一个数据表
        // 定义表头
        $first_cells = array(
            array("serial","序号"),
            array("title","名称"),
            array("logo","logo"),
            array("remark","描述")
        );
        // 为表增加数据
        $excel_data = get_file_cache("excel_data");
        $first_rows_data = array();
        // 数据与上面表头对应
        foreach ($excel_data as $key => $row_info) {
            array_push($first_rows_data,array(
                "serial"=>$row_info['serial'],
                "title"=>$row_info['title'],
                "logo"=>$row_info['logo_path'],
                "remark"=>$row_info['remark']
            ));
        }
        array_push($sheets,array(
            "title"=>"前端项目流行框架",
            "cells"=>$first_cells,
            "rows"=>$first_rows_data
        ));
        $xlsName  = "Excel数据导出";
        $xlsName = $xlsName  . date('YmdHis');
        $this->exportExcel($xlsName,$sheets,$excel_detail);
    }

Function exportExcel schreibt die Daten nach Excel und definiert den Stil der Tabelle. Der vollständige Code lautet wie folgt: exportExcel将数据写入到Excel,并定义表格的样式,完整代码如下:

    protected function exportExcel($expTitle,$xlsSheets,$detail){
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Writer.Excel5");
        import("Org.Util.PHPExcel.IOFactory.php");
        $fileName = $expTitle;
        $objPHPExcel = new \PHPExcel();
        $objPHPExcel->getDefaultStyle()->getFont()->setName('宋体');
        // Excel列名称
	$cellName = array(
	'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U',
	'V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM',
	'AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'
	);
        foreach ($xlsSheets as $index => $sheet_info) {
            $sheet_title = $sheet_info['title'];
            if ($index>0){
                // Excel默认已经建好的数据表,超过一张需要执行这里创建一个工作表
                $newSheet = new \PHPExcel_Worksheet($objPHPExcel, $sheet_title); //创建一个工作表
                $objPHPExcel->addSheet($newSheet);
            } else {
                $objPHPExcel->getActiveSheet($index)->setTitle($sheet_title);
            }
            $expCellName = $sheet_info['cells'];
            $expTableData = $sheet_info['rows'];
            $cellNum = count($expCellName);
            $dataNum = count($expTableData);
            $cellmerget = "";
            $cellWidths = array();
            $sheet_head_title = $sheet_title;
            // 下面需要为每个工作表定义宽度
            switch ($index) {
                case 1: // 每张表的索引从 0 开始计算
                    $cellmerget = 'A1:E1';
                    $cellWidths=array(16,16,16,28,16);
                    break;
                default:
                    $cellmerget = 'A1:D1';
                    $sheet_head_title = $sheet_title ;
                    $cellWidths=array(16,16,16,36);
                    break;
            }
            $activeSheet = $objPHPExcel->setActiveSheetIndex($index);

            for($i=0;$i<$cellNum;$i++){
                $currentCellName = $cellName[$i];
                $activeSheet->getRowDimension(1)->setRowHeight(36);
                $activeSheet->getColumnDimension($currentCellName)->setWidth($cellWidths[$i]);
                $activeSheet->getStyle($currentCellName.&#39;1&#39;)->getFont()->setSize(12)->setBold(true);
                $activeSheet->getStyle($currentCellName.&#39;1&#39;)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
            }

            $activeSheet->mergeCells($cellmerget);//合并单元格
            $activeSheet->setCellValue(&#39;A1&#39;, $sheet_head_title);
            $activeSheet->getStyle(&#39;A1&#39;)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $activeSheet->getStyle(&#39;A1&#39;)->getFont()->setSize(20);
            $activeSheet->getRowDimension(1)->setRowHeight(50);
            $styleThinBlackBorderOutline = array(  
                    &#39;borders&#39; => array (  
                        &#39;outline&#39; => array (  
                                &#39;style&#39; => \PHPExcel_Style_Border::BORDER_MEDIUM,   //设置border样式
                                &#39;color&#39; => array (&#39;argb&#39; => &#39;FF9b9b9b&#39;),          //设置border颜色  
                        ),  
                ),  
            );  
            for($i=0;$i<$cellNum;$i++){
                $currentCellName = $cellName[$i];
                $activeSheet->getRowDimension(2)->setRowHeight(36);
                $activeSheet->getColumnDimension($currentCellName)->setWidth($cellWidths[$i]);
                $activeSheet->setCellValue($currentCellName.&#39;2&#39;, $expCellName[$i][1]);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getFill()->getStartColor()->setARGB(&#39;FFc6efcd&#39;);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getFont()->setSize(12)->setBold(true);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->applyFromArray($styleThinBlackBorderOutline);  
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $activeSheet->freezePane($currentCellName.&#39;3&#39;);  // 锁定表头,3 意味着锁定第3行上面的
            }
            switch ($index) {
                case 1:

                    break;
                default:
                    $start_row_index = 3; // 数据开始索引行
                    for($i1=0;$i1<$dataNum;$i1++){
                        $objPHPExcel->getActiveSheet()->getRowDimension($i1+3)->setRowHeight(60);
                        for($j1=0;$j1<$cellNum;$j1++){
                            if ($j1===2){
                                $logo_path = $expTableData[$i1][$expCellName[$j1][0]];
                                if ($logo_path!=="" && file_exists($logo_path)){
                                    $objDrawing = new \PHPExcel_Worksheet_Drawing();
                                    $objDrawing->setPath($logo_path);
                                    $objDrawing->setHeight(60);
                                    $objDrawing->setWidth(60);
                                
                                    $objDrawing->setOffsetX(5);
                                    $objDrawing->setOffsetY(5);
                                    $objDrawing->setCoordinates($cellName[$j1].($i1+$start_row_index));
                                    $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
                                } else {
                                    $objPHPExcel->getActiveSheet()->setCellValue($cellName[$j1].($i1+$start_row_index), "");
                                    $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                                    $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
                                    $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setWrapText(true);
                                }
                            } else {
                                $objPHPExcel->getActiveSheet()->setCellValue($cellName[$j1].($i1+$start_row_index), $expTableData[$i1][$expCellName[$j1][0]]);
                                $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                                $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
                                $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setWrapText(true);
                            }
                        }
                    }
                    break;
            }
            
        }
        $objPHPExcel->setActiveSheetIndex(0);

		header(&#39;pragma:public&#39;);
		header(&#39;Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;name="&#39;.$fileName.&#39;.xlsx"&#39;);
		header("Content-Disposition:attachment;filename=$fileName.xlsx"); // attachment新窗口打印inline本窗口打印
		$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, &#39;Excel2007&#39;);
		$objWriter->save(&#39;php://output&#39;);
		exit;
    }

导出后的格式如下:

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

锁定表头

锁定表头是Excel比较常见的功能,可以方便查阅者查阅数据,使用 phpExcel 设置表头的代码如下:

$activeSheet->freezePane($currentCellName.&#39;3&#39;); // 3 意味着锁定第3行上面的行数

表格边框样式

上面的代码设置表格边框样式的代码为PHPExcel_Style_Border::BORDER_MEDIUM,在 phpExcel 中有14个配置可选项目。

PHPExcel_Style_Border::BORDER_NONE;
PHPExcel_Style_Border::BORDER_THIN;
PHPExcel_Style_Border::BORDER_MEDIUM;
PHPExcel_Style_Border::BORDER_DASHED;
PHPExcel_Style_Border::BORDER_DOTTED;
PHPExcel_Style_Border::BORDER_THICK;
PHPExcel_Style_Border::BORDER_DOUBLE;
PHPExcel_Style_Border::BORDER_HAIR;
PHPExcel_Style_Border::BORDER_MEDIUMDASHED;
PHPExcel_Style_Border::BORDER_DASHDOT;
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT;
PHPExcel_Style_Border::BORDER_DASHDOTDOT;
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT;
PHPExcel_Style_Border::BORDER_SLANTDASHDOT;

1. BORDER_NONE

对应的完整配置项为 PHPExcel_Style_Border::BORDER_NONE

\PHPExcel_Style_Border::BORDER_THIN

Das exportierte Format ist wie folgt:

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

Kopfzeile sperren

Kopfzeile sperren ist eine häufige Funktion in Excel, die den Lesern das Überprüfen von Daten erleichtern kann. Verwenden Sie phpExcel, um den Kopfzeilencode wie folgt festzulegen : Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

\PHPExcel_Style_Border::BORDER_MEDIUM

Tabellenrahmenstil

Der Code zum Festlegen des Tabellenrahmenstils im obigen Code ist PHPExcel_Style_Border::BORDER_MEDIUM code>. Es gibt <p>14<img src="https://img.php.cn/upload/image/976/107/161/163170676514147Bringen%20Sie%20Ihnen%20Schritt%20f%C3%BCr%20Schritt%20bei,%20wie%20Sie%20ThinkPHP+phpExcel%20zum%20Importieren%20und%20Exportieren%20von%20Excel-Daten%20verwenden%20(%C3%9Cbung)" title="163170676514147Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)" alt="Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)">optionale Konfigurationselemente in <code>phpExcel.

\PHPExcel_Style_Border::BORDER_DASHED
1. BORDER_NONE

3. BORDER_MEDIUM

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

\PHPExcel_Style_Border::BORDER_DOTTED

4. BORDER_DASHED

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

\PHPExcel_Style_Border::BORDER_THICK

\PHPExcel_Style_Border::BORDER_DOUBLE

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)7. BORDER_DOUBLE

\PHPExcel_Style_Border::BORDER_HAIR

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)8. BORDER_HAIR

\PHPExcel_Style_Border::BORDER_HAIR

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

9. BORDER_MEDIUMDASHED

\PHPExcel_Style_Border::BORDER_MEDIUMDASHED

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

10. BORDER_DASHDOT

\PHPExcel_Style_Border::BORDER_DASHDOT

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

11. BORDER_MEDIUMDASHDOT

\PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

12. BORDER_DASHDOTDOT

\PHPExcel_Style_Border::BORDER_DASHDOTDOT

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

13. BORDER_MEDIUMDASHDOTDOT

\PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

14. BORDER_SLANTDASHDOT

\PHPExcel_Style_Border::BORDER_SLANTDASHDOT

1Bringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung)

部署

在部署上,通常的架构是 nginx + php-fpm,对于Excel中图片比较多的数据导入需要设置加大上传文件的限制和超时时间。

在文件上传上,通常会出现 413 request Entity too Large 错误,解决的办法是在 nginx 配置中增加以下配置:

client_max_body_size  2048m;

相应的 PHP 配置也需要修改,需要修改 php.ini

upload_max_filesize = 2048M
post_max_size = 2048M

Excel数据导入,通常会触发504错误,这种情况一般是执行时间太短,涉及的 nginx 配置:

fastcgi_connect_timeout 600;

php-fpm 中的 www.conf

request_terminate_timeout = 1800

环境问题个人觉得是后台开发经常发生的,最佳的方式是实际运行出一个最佳的配置,将其制作成 docker 镜像,这样可以确保环境迁移或者其他场合需要,可以快速完成环境配置,而且不容易出问题。

原文地址:https://juejin.cn/post/6982953271933550628

作者:天行无忌

推荐学习:《PHP视频教程

Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen Schritt für Schritt bei, wie Sie ThinkPHP+phpExcel zum Importieren und Exportieren von Excel-Daten verwenden (Übung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen