2015-11-02 21 views
0

我是新的Codeigniter。我想知道如何在視圖中獲取表數據,通過ajax(也許)發送它,並檢索控制器中的表數據(我想將表數據導出到Excel文件中)。提前致謝。Codeigniter - 獲取表數據的視圖,發送表數據和檢索控制器上的表數據

我的觀點:

<table id="mytable"> 
        <?php 
         $i=1; 
         foreach ($placeout as $placeout_item){ 
        ?> 
          <tr class="gradeX"> 
           <td class="center"><?php echo $i; $i++; ?></td> 
           <td><?php echo $placeout_item['pjname']; ?></td> 
           <td><?php echo $placeout_item['entries_date']; ?></td> 
           <td><?php echo $placeout_item['lg_id']; ?></td> 
           <td class="right"><?php echo $placeout_item['entries_amt']; ?></td> 
           <td class="right"><?php echo $placeout_item['comm']; ?></td> 
           <td class="center"><?php echo $placeout_item['curr_id']; ?></td> 
          </tr> 
        <?php 
         } 
        ?> 
</table> 
<button type="reset" class="btn btn-icon btn-default" onclick="exportExcel('Placeout')"><i></i>Export to Excel</button> 

我的jQuery:

<script> 
var data_table = []; 
$('#mytable td').each(function() { 
    data_table.push($(this).html()); //make an array from table data 
}); 

function exportExcel(name) { 
    $.ajax(
    { 
     url: "<?php echo site_url('export/excel/"+name+"'); ?>", 
     type:'POST', //data type 
     dataType : "json",   //this line should be erased??? 
     data : {tes:data_table} 
    }); 
} 
</script> 

我的控制器:

function excel($name="") 
{ 
    $data_table=$this->input->post('tes'); 

    $objPHPExcel = new PHPExcel(); 

    if($data_table!=null) 
    { 
     foreach ($data_table as $data) 
     { 
      $exceldata[] = $data; 
     } 
     $objPHPExcel->getActiveSheet()->fromArray($exceldata, null, 'A2'); 
    } 
    header('Content-Type: application/vnd.ms-excel'); 
    header('Content-Disposition: attachment;filename="'.$name.'.xls"'); 
    header('Cache-Control: max-age=0'); 
    $objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5');     
    $objWriter->save('php://output'); 
} 
+0

,如果你只是想表導出至您可以使用爲數據導出dbutil庫文件。 http://www.geeks.gallery/how-to-export-data-as-csv-from-database-in-codeigniter/ –

+0

我想從數據庫中導出數據表而不是數據庫..... – Krisnadi

回答

0

我有一些修改Excel函數在控制器中的文件。

function excel($name="") 
{ 
    $filename = "excel_report.csv"; 
    $fp = fopen('php://output', 'w');    
    header('Content-Type: text/csv; charset=utf-8');  
    header('Content-type: application/csv'); 
    header('Content-Disposition: attachment; filename='.$filename); 

    $data_table=$this->input->post('tes'); 

    if($data_table!=null) 
    { 
     foreach ($data_table as $data) 
     { 
      $exceldata = array(
        $data['column_name_1'], // dummy column name here 
        $data['column_name_2'], 
        $data['column_name_3'], 
        $data['column_name_4'], 
        ); 
      fputcsv($fp, $exceldata); 
     } 

    } 
die(); 

} 
0

你的jQuery應該是這樣的:

<script> 
var data_table = []; 
$('#mytable tr').each(function() { 
    var tr = []; 
    $(this).find('td').each(function(){ 
     tr.push($(this).html()) 
    }); 
    data_table.push(tr); //make an array from table data 
}); 

function exportExcel(name) { 
    $.ajax(
    { 
     url: "<?php echo site_url('export/excel/"+name+"'); ?>", 
     type:'POST', //data type 
     dataType : "json",   //this line should be erased??? 
     data : {tes:data_table} 
    }); 
} 
</script> 
相關問題