PhpSpreadsheetを使用してデータをExcelファイルにエクスポート

6160 ワード

ソース:https://www.erdangjiade.com/js/8619.html
学生の成績リストが表示されます.リストの下にある「Excelテーブルのエクスポート」ボタンをクリックすると、データをダウンロードしてExcelファイルとして保存できます.ボタンをクリックすると、exportをリクエストしました.phpではexportを見てみましょうphpファイル:1.ヘッダーを設定するには、まずPhpSpreadsheetライブラリを自動的にロードし、次にインスタンス化し、ワークシートのタイトル名を「学生成績表」に設定し、次にヘッダーの内容を設定します.ヘッダーは2行に分かれ、最初の行は表の名前、2番目の行数は表の列の名前です.最後に、最初の行のセルをマージし、ヘッダーの内容スタイル:フォント、配置方法などを設定します.
  • require 'vendor/autoload.php';
  •  
  • use PhpOffice\PhpSpreadsheet\Spreadsheet;
  • use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  •  
  • include('conn.php'); //
  •  
  • $spreadsheet = new Spreadsheet();
  • $worksheet = $spreadsheet->getActiveSheet();
  • //
  • $worksheet->setTitle(' ');
  •  
  • //
  • //
  • $worksheet->setCellValueByColumnAndRow(1, 1, ' ');
  • $worksheet->setCellValueByColumnAndRow(1, 2, ' ');
  • $worksheet->setCellValueByColumnAndRow(2, 2, ' ');
  • $worksheet->setCellValueByColumnAndRow(3, 2, ' ');
  • $worksheet->setCellValueByColumnAndRow(4, 2, ' ');
  • $worksheet->setCellValueByColumnAndRow(5, 2, ' ');
  •  
  • //
  • $worksheet->mergeCells('A1:E1');
  •  
  • $styleArray = [
  •     'font' => [
  •         'bold' => true
  •     ],
  •     'alignment' => [
  •         'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
  •     ],
  • ];
  • //
  • $worksheet->getStyle('A1')->applyFromArray($styleArray)->getFont()->setSize(28);
  •  
  • $worksheet->getStyle('A2:E2')->applyFromArray($styleArray)->getFont()->setSize(14);

  •  
    2.データを読み取る我々はデータベースに接続した後、直接学生成績表t_を読み取るstudent、そしてforループ、各セルに対応する内容を設定し、総成績を計算します.表のデータは3行目から始まります.1行目、2行目はヘッダーが占有されているためです.次に、表全体のスタイルを設定し、表に枠線を付け、中央に揃えます.
  • $sql = "SELECT id,name,chinese,maths,english FROM `t_student`";
  • $stmt = $db->query($sql);
  • $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  • $len = count($rows);
  • $j = 0;
  • for ($i=0; $i 
  •     $j = $i + 3; // 3
  •     $worksheet->setCellValueByColumnAndRow(1, $j, $rows[$i]['name']);
  •     $worksheet->setCellValueByColumnAndRow(2, $j, $rows[$i]['chinese']);
  •     $worksheet->setCellValueByColumnAndRow(3, $j, $rows[$i]['maths']);
  •     $worksheet->setCellValueByColumnAndRow(4, $j, $rows[$i]['english']);
  •     $worksheet->setCellValueByColumnAndRow(5, $j, $rows[$i]['chinese'] + $rows[$i]['maths'] + $rows[$i]['english']);
  • }
  •  
  • $styleArrayBody = [
  •     'borders' => [
  •         'allBorders' => [
  •             'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
  •             'color' => ['argb' => '666666'],
  •         ],
  •     ],
  •     'alignment' => [
  •         'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
  •     ],
  • ];
  • $total_rows = $len + 2;
  • // /
  • $worksheet->getStyle('A1:E'.$total_rows)->applyFromArray($styleArrayBody);

  •  
    冒頭で述べたボスのニーズを満たすためだけに、この時点でデータをExcelファイルに保存することができます.もちろん、このExcelファイルはサーバーにしか保存されず、メールなどでボスに送信すると終わります.しかし、より多くのアプリケーションシーンでは、ユーザーが直接データダウンロードをExcelテーブルファイルにエクスポートする場合があります.次を参照してください.ダウンロード保存最後に、ブラウザにデータのダウンロードを強制し、Excelファイルとして保存します.
  • $filename = ' .xlsx';
  • header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  • header('Content-Disposition: attachment;filename="'.$filename.'"');
  • header('Cache-Control: max-age=0');
  •  
  • $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
  • $writer->save('php://output');
  •  
  • .xls , header :
  •  
  • $filename = ' .xlsx';
  • header('Content-Type: application/vnd.ms-excel');
  • header('Content-Disposition: attachment;filename="'.$filename.'"');
  • header('Cache-Control: max-age=0');
  •  
  • $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'xls');
  • $writer->save('php://output');

  •  
    完全なコードはソースコードとデータベースをダウンロードしてください.詳細THinkPHPソースにアクセスしてください:http://t.cn/RmZekiV