[สอบถาม] เรื่องวิธการสร้าง Excel จาก PHPSpreadsheet ครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา [สอบถาม] เรื่องวิธการสร้าง Excel จาก PHPSpreadsheet ครับ
[สอบถาม] เรื่องวิธการสร้าง Excel จาก PHPSpreadsheet ครับ
Copy
ตอนนี้ผมกำลัง test การ สร้าง excel จาก PHPSpreadsheet ครับ จาก
กระทู้นี้ครับ https://www.ninenik.com/content.php?arti_id=928 แล้วที่นี้
ผมอยากจะให้สร้างเสร็จให้ โหลดมาแล้วเปิดได้เลย ผมเลยทำแบบนี้
แล้วผลที่ได้คือ มัน export ให้ แต่เปิดไม่ได้ มันเป็นแบบนี้ ครับ
![]()
คือไม่อยากให้ เซฟไฟล์ลง เซิฟเวอร์อ่ะครับ อยากให้ เซฟลง เครื่องของ user เลย ผมต้องปรับ โค๊ดตรงไหนไมครับ
ขอบคุณครับ
กระทู้นี้ครับ https://www.ninenik.com/content.php?arti_id=928 แล้วที่นี้
ผมอยากจะให้สร้างเสร็จให้ โหลดมาแล้วเปิดได้เลย ผมเลยทำแบบนี้
function phpexcel() { //echo 'PHPExcel'; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // การกำหนดค่า ข้อมูลเกี่ยวกับไฟล์ excel $sheet->setCellValue('A1', 'Hello World!!'); // กำหนดค่าใน cell A1 $sheet->setCellValue('A2', 'ทดสอบข้อความภาษาไทย!!'); // กำหนดค่าใน cell A2 $writer = new Xlsx($spreadsheet); // ชื่อไฟล์ $rand_no = rand(000000, 999999); $filename = 'ExcelNo-' . date("dmY_His") . '.xlsx'; //save our document as this file name header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $filename . '"'); header('Cache-Control: max-age=0'); $writer->save('php://output'); }
แล้วผลที่ได้คือ มัน export ให้ แต่เปิดไม่ได้ มันเป็นแบบนี้ ครับ
คือไม่อยากให้ เซฟไฟล์ลง เซิฟเวอร์อ่ะครับ อยากให้ เซฟลง เครื่องของ user เลย ผมต้องปรับ โค๊ดตรงไหนไมครับ
ขอบคุณครับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
Copy
เช็คดูว่า มีการเรียกใช้งาน spreadsheet กับ writer class หรือไม่
![]()
ตรวจสอบเปิดไฟล์ excel ที่ได้ใน text editor เช่น notepad หรือ nodepad++ ว่ามีค่าอื่นๆ แทรกเข้ามาหรือไม่ บางทีอาจจะมีค่า
ที่ถูก print แสดงอยู่ในไฟล์นั้น
ตรวจสอบเปิดไฟล์ excel ที่ได้ใน text editor เช่น notepad หรือ nodepad++ ว่ามีค่าอื่นๆ แทรกเข้ามาหรือไม่ บางทีอาจจะมีค่า
ที่ถูก print แสดงอยู่ในไฟล์นั้น
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniter | อ่าน 4,469 |
ใช้งาน Intervention Image ผ่าน Composer ร่วมกับ Codeigniter เบื้องต้น | อ่าน 2,104 |
ออกรายงานเป็น Excel ไฟล์ ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 1 | อ่าน 845 |

ความคิดเห็นที่
2
Copy
เช็คดูว่า มีการเรียกใช้งาน spreadsheet กับ writer class หรือไม่
- ประกาศเรียกใช้แล้วครับ
![]()
ส่วนผมดูไม่เป็นว่า ตอนเปิด ใน editor แล้ว ต้องเป็นแบบไหน แต่ผมลองเปิดจากไลฟ์ที่ create ออกมาแล้วเป็นแบบนี้ครับ
- ประกาศเรียกใช้แล้วครับ
ส่วนผมดูไม่เป็นว่า ตอนเปิด ใน editor แล้ว ต้องเป็นแบบไหน แต่ผมลองเปิดจากไลฟ์ที่ create ออกมาแล้วเป็นแบบนี้ครับ

ความคิดเห็นที่
3
Copy
สังเกตจะมีคำว่า PHPExcel ก่อนคำว่า Pk ค่านี้ถูก print มาจากคำสั่งไหนสักคำสั่ง ลองเช็คดู แล้วลบค่านี้ออก
หรือจะทดสอบลบออกในโปรแกรม notepad++ แล้วบันทึกไฟล์ และลองเปิดไฟล์ใหม่ดู
หากไม่มีอะไรผิดพดลาด จะสามารถเปิดไฟล์ได้ปกติ
------------------------------------------
ควรได้ไฟล์ลักษณะนี้
หรือจะทดสอบลบออกในโปรแกรม notepad++ แล้วบันทึกไฟล์ และลองเปิดไฟล์ใหม่ดู
หากไม่มีอะไรผิดพดลาด จะสามารถเปิดไฟล์ได้ปกติ
------------------------------------------
ควรได้ไฟล์ลักษณะนี้

ความคิดเห็นที่
4
Copy
ผมลองเชคดูแล้ว ไฟล์ที่ create ออกมาเป็นแบบนี้![]()
ก็ยังเปิดไมไ่ด้เหมือนเดิมครับ
แต่ผมสงสัยว่า ถ้าเป็นเปลี่ยนโค็ดเป็นแบบนี้
ก็ยังเปิดไมไ่ด้เหมือนเดิมครับ
แต่ผมสงสัยว่า ถ้าเป็นเปลี่ยนโค็ดเป็นแบบนี้
function phpexcel() { //echo 'PHPExcel'; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // การกำหนดค่า ข้อมูลเกี่ยวกับไฟล์ excel $sheet->setCellValue('A1', 'Hello World!!'); // กำหนดค่าใน cell A1 $sheet->setCellValue('A2', 'ทดสอบข้อความภาษาไทย!!'); // กำหนดค่าใน cell A2 $writer = new Xlsx($spreadsheet); // ชื่อไฟล์ $rand_no = rand(000000, 999999); $filename = 'ExcelNo-' . date("dmY_His") . '.xlsx'; //save our document as this file name // header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // header('Content-Disposition: attachment;filename="' . $filename . '"'); // header('Cache-Control: max-age=0'); $writer->save($filename); }กลับเปิดได้ปกติ

ความคิดเห็นที่
5
Copy
ให้เปิดไฟล์ excel ที่เปิดได้ กับที่เปิดไม่ได้ใน notepad++ เปรียบเทียบดู
ไฟล์ที่เปิดได้ จะขึ้นต้นด้วย PK ไม่มีช่องว่างด้านหน้า ไม่มีบรรทัดว่างด้านบน ดูรูปที่แนะนำไป
ไฟล์ที่เปิดไม่ได้ จะมีข้อความอื่นเข้ามาแทรก หรือไม่ก็มีช่องว่างด้านหน้า หรือมีบรรทัดว่างด้านบน
คำสั่ง $writer->save('php://output');
จะมองที่เริ่มต้นของโค้่ดคำสั่ง ทั้งหมดจนจบคำสั่ง
ส่วนคำสั่ง $writer->save($filename);
จะจัดการทีเฉพาะส่วนของข้อมูล ถึงเราจะ echo ค่าอะไร ก็ไม่มีผลต่อค่าที่ถูกเขียนเข้าไปในไฟล์
เพราะเป็นคำสั่งที่ไม่เกี่ยวกับการเขียนไฟล์
ไล่หาช่องว่าง หรือบรรทัดทั้งหมด ที่ทำให้เกิดช่องว่าง น่าจะช่วยได้

เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ