将数据库表导出到Laravel中的EXCEL

时间:2018-12-02 19:24:24

标签: php excel laravel export-to-excel

我正在使用laravel5.6。我想将数据库表数据导出到Excel文件中。 这是我的控制器代码

    use Exporter;

    $business = Approvedemand::all();
    $values ='';
    foreach($business as $item)
    {
        $values.='<tr>
            <td>'.$item['id'].'</td>
            <td>'.$item['name'].'</td>
            </tr>';   
    }
    header('Content-type: application/excel');
    $filename = date('Y-m-d').'-approveList'.'.xls';
    header('Content-Disposition: attachment; filename='.$filename);

    $data = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">
    <head>
       <!--[if gte mso 9]>
       <xml>
         <x:ExcelWorkbook>
             <x:ExcelWorksheets>
               <x:ExcelWorksheet>
                  <x:Name>Sheet 1</x:Name>
                      <x:WorksheetOptions>
                          <x:Print>
                             <x:ValidPrinterInfo/>
                          </x:Print>
                      </x:WorksheetOptions>
               </x:ExcelWorksheet>
            </x:ExcelWorksheets>
        </x:ExcelWorkbook>
    </xml>
    <![endif]-->
</head>
<body>
   <table>
      <tr>
        <td>ID</td>
        <td>Name</td>
     </tr>'
    .$values.
  '</table>
 </body>
 </html>';

 echo $data;

当我运行此文件时,会下载excel文件,但会在excel中显示html标签。我不确定此方法是否正确。

1 个答案:

答案 0 :(得分:2)

  

运行此文件时,是excel文件。

我假设您的意思是通过网络路由调用控制器功能。像..

Route::get('/your/path', 'BusinessController@export')->name('export');
  

我想将数据库表数据导出到Excel文件中。

您可以为此使用Maatwebsite/Excel 2.1.0

BusinessController

use App\Approvedemand;

public function export()
{
    $data = App\Approvedemand::all();

    return Excel::create('Approve Demand'), function($excel) use ($data) {
        $excel->sheet('Sheetname', function($sheet) use ($data)
        {
            $sheet->fromArray($data);
        });
    })->export('xls');
}

这只是一个基本示例。您显然希望在此处包括一些验证。