ข้ามไปที่เนื้อหาหลัก

การใช้งาน fputcsv() สำหรับการทำ Report CSV


เรื่องของเรื่อง ถูกมอบหมายให้ทำ Report ที่สามารถ Export ออกมาเปิดดูใน Excel ได้ ไอ้คนคิดน้อยอย่างผมก็ไม่คิดมากครับไปโหลด PHPExcel มาใช้เลยทำอยู่นาน ปรากฏว่า Project Manager มาดูเค้าก็แนะนำว่า ใช้ Library ยากไปเปลี่ยนๆ มาใช้ฟังก์ชันง่ายๆ ตัวนี้ดู

วันนี้เลยอยากจะมาแนะนำการทำ Report ออกมาเป็นไฟล์ CSV แบบง่ายๆ โดยไม่พึ่ง Library ใดๆ ผ่านฟังก์ชัน fputcsv() กันครับ ลองดูๆ



ตัวอย่างที่ 1 แบบง่ายๆ

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}
ตัวอย่างที่ 2 แบบดาวน์โหลดไฟล์

// ทำให้เกิด Force Download ทันทีที่เข้ามาในหน้าที่เขียนโค้ดไว้
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename); 

$fp = fopen('php://output', 'w');
$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}


ซึ่งก็ไม่น่าเชื่อนะครับว่ามันจะง่ายอะไรแบบนี้ ถ้าใช้ Library ผมต้องไปนั่ง ตั้งค่าคอลัมน์อีกหลายบรรทัดเลยทีเดียว แนะนำว่าวิธีเป็นการออกรายงานแบบง่ายนะครับ ถ้าต้องการรูปแบบที่สวยงามก็ต้องพึ่ง Library อยู่ดี :D วันนี้ขอตัวก่อนครับ

แหล่งข้อมูล PHPManual

โพสต์ยอดนิยมจากบล็อกนี้

การเพิ่ม Font ภาษาไทยอื่นๆ เข้าไปใช้งานใน MPDF

เนื่องมาจากผมได้มีโอกาสจับงานที่ต้องแปลงหน้าเว็บให้เป็น PDF ลองๆ หาข้อมูลก็ไปเจอเจ้าตัวนี้ MPDF ซึ่งจริงๆ แล้วก็มีให้ใช้งานอีกหลายๆ ตัว สาเหตุที่เลือกใช้งานตัวนี้เพราะมัน ค่อนข้างจะติดตั้ง และใช้งานง่าย และยังสามารถอ้างอิง CSS เข้ามาช่วยจัดหน้าตาใน PDF ได้อีกด้วย ซึ่งผลที่ได้เพี้ยนไปจากตัวจริงไม่มากครับ แต่ที่ทำให้เลือกใช้งานเพราะการเพิ่มฟ้อนท์ภาษาไทย เข้าไปนั้นค่อนข้างง่ายครับ เลยจะขอมาแนะนำดังนี้

มาเข้าใจ และใช้ Datatable ดึงข้อมูลแบบ Server-side ด้วย PHP, MySQL กันเถอะ

มีช่วงหนึงผมเคยนำ datatable มาพัฒนาในงานแต่เกิดปัญหาเนื่องจากมีข้อมูลขนาดใหญ่ ทำให้เกิดการโหลดในครั้งแรกที่โหลดหน้าเพจนั้นๆ เนื่องจากผมใช้ Ajax ในการโหลดข้อมูลทั้งหมดมาในครั้งเดียวด้วยจำนวนข้อมูล 1000 ขึ้น ซึ่งตอนนั้นผมคิดว่าการทำ preload น่าจะช่วยได้ แต่ว่าถ้า user เกิดเผลอไปกด refesh หรือแก้ไขข้อมูลเวลากลับมาที่หน้าข้อมูลก็ต้องโหลดใหม่อีก ทำให้ผมเลิกใช้ datatable ไปเลย เพราะคิดว่ามันคงไม่เหมาะ

แต่ในความจริงแล้ว datatable ก็ได้มีสิ่งที่มาแก้ในจุดนั้นได้ ซึ่งเรียกว่า server-side โดยการที่อนุญาตให้เรา query ข้อมูลออกมาก่อนแล้วส่งมาให้ datatable อ่านข้อมูลในจำนวนที่น้อยลง หลักการก็เหมือนๆ กับบทความการทำสร้าง XML จากข้อมูลขนาดใหญ่นั่นแหละครับ แต่มีเงื่อนไขเพียงแต่ว่า ต้อง Filter และส่งข้อมูลออกมาในรูปแบบที่ตรงตามหลักของ datatable เท่านั้น ( บางครั้งเวลาเข้าไปอ่าน Document หรือดู Example จะงงๆ ว่าอะไรเยอะแยะ ) โดยวันนี้จะมาแนะนำการใช้งานแบบง่ายๆ กันเลย :D

ปลดล็อคความสามารถให้กับ Sublime Text ตอนที่ 2

ความเดิมจากตอนที่แล้วสำหรับตอนที่ 2 นี้ ผมจะมาแนะนำ plugin ที่น่าใช้สำหรับ Web Development นะครับ ซึ่งความจริงแล้วก็มีให้เราเลือกเลือกใช้มากมาย สามารถ search google ได้ด้วยคำว่า "sublime popular package" ซึ่งทาง Sublime Text ได้จัดอันดับไว้ให้เราด้วย สามารถเข้าไปเลือกดู เลือกโหลดกันตามใขชอบเลยครับ แต่ผมจะมาขอแนะนำ ตัวที่คิดว่าลงแล้วใช้งานได้จริงแน่ๆ มาฝากกันครับ