Back

การ export ข้อมูล ด้วยการแสดงคอลัมน์หัวตารางที่มากกว่า 1 แถว ของ datatable

ในการจัดทำรายงานของระบบสารสนเทศต่าง ๆ ปัจจุบันนิยมทำตารางเป็น datatable ซึ่ง datatable สามารถ export excel หรือ pdf หรือ print เป็นต้น ได้ แต่ในการ export พบปัญหาว่าเมื่อคลิก export ข้อมูลมาแล้วหัวตาราง แสดงเพียง 1 แถว ซึ่งในหน้าวิว จะแสดงเป็น 3 แถว  ดังภาพที่ 1 และ 2

 

ภาพที่ 1 หน้าจอการแสดงบนหน้าเว็บไซต์

ภาพที่ 2 ไฟล์ excel ที่ export มาจากหน้าเว็บไซต์

จากการค้นหาพบว่ามีแนวทางการแก้ไขได้หลายทาง ในบทความนี้จะนำแนวทางการนำหลาย ๆ แถว มารวมกันเพื่อให้แสดงออกมาในแถวเดียวกัน ดังนี้    

1. เพิ่ม code ใน <script> ก่อนฟังก์ชั่น datatable

function GetColumnPrefix(colIndex) {

    switch (colIndex) {
        case 2:
        case 3:
            return “ป.ตรี < 4 ปี “;
        case 4:
        case 5:
            return “ป.ตรี = 4 ปี “;
        case 6:
        case 7:
            return “ป.ตรี > 4 ปี “;
        default:
            return “”;
    }
}

var buttonCommon = {
    exportOptions: {
        columns: ‘:visible’,
        format: {
            header: function(data, columnindex, trDOM, node) {
                debugger;
                return GetColumnPrefix(columnindex) + data;
            }
        }
    }
};

2. ใน ฟังก์ชั่น datatable  ส่วนของ buttons แก้ไขเป็น

var table = $(‘.tablesort_page’).DataTable({
    dom: ‘Bfrtip’

 buttons: [
    $.extend(true, {}, buttonCommon, {
        extend: ‘copyHtml5’
    }),
    $.extend(true, {}, buttonCommon, {
        extend: ‘excelHtml5’
    }),
    $.extend(true, {}, buttonCommon, {
        extend: ‘print’
    })]

});

แก้ไขแล้วได้