[สอบถาม] เรื่องวิธการสร้าง Excel จาก PHPSpreadsheet ครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา [สอบถาม] เรื่องวิธการสร้าง Excel จาก PHPSpreadsheet ครับ

[สอบถาม] เรื่องวิธการสร้าง Excel จาก PHPSpreadsheet ครับ
ตอนนี้ผมกำลัง test การ สร้าง excel จาก PHPSpreadsheet ครับ จาก 
กระทู้นี้ครับ 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 เลย ผมต้องปรับ โค๊ดตรงไหนไมครับ

ขอบคุณครับ


Nutzaaclub 183.88.228.xxx 27-11-2019 15:45:17

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ เข้าใช้งานด้วย Facebook คลิก )
 ความคิดเห็นที่ 1
เช็คดูว่า มีการเรียกใช้งาน spreadsheet กับ writer class หรือไม่



ตรวจสอบเปิดไฟล์ excel ที่ได้ใน text editor เช่น notepad หรือ nodepad++ ว่ามีค่าอื่นๆ แทรกเข้ามาหรือไม่ บางทีอาจจะมีค่า
ที่ถูก print แสดงอยู่ในไฟล์นั้น



บทความแนะนำที่เกี่ยวข้อง
การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniterอ่าน 4,469
ใช้งาน Intervention Image ผ่าน Composer ร่วมกับ Codeigniter เบื้องต้นอ่าน 2,104
ออกรายงานเป็น Excel ไฟล์ ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 1อ่าน 845
Ninenik 124.122.198.xxx 27-11-2019
 ความคิดเห็นที่ 2
เช็คดูว่า มีการเรียกใช้งาน spreadsheet กับ writer class หรือไม่
- ประกาศเรียกใช้แล้วครับ



ส่วนผมดูไม่เป็นว่า ตอนเปิด ใน editor แล้ว ต้องเป็นแบบไหน แต่ผมลองเปิดจากไลฟ์ที่ create ออกมาแล้วเป็นแบบนี้ครับ




Nutzaaclub 183.88.228.xxx 27-11-2019 18:50
 ความคิดเห็นที่ 3
สังเกตจะมีคำว่า PHPExcel ก่อนคำว่า Pk ค่านี้ถูก print มาจากคำสั่งไหนสักคำสั่ง ลองเช็คดู แล้วลบค่านี้ออก
หรือจะทดสอบลบออกในโปรแกรม notepad++ แล้วบันทึกไฟล์ และลองเปิดไฟล์ใหม่ดู
หากไม่มีอะไรผิดพดลาด จะสามารถเปิดไฟล์ได้ปกติ


------------------------------------------
ควรได้ไฟล์ลักษณะนี้



Ninenik 223.24.144.xxx 27-11-2019
 ความคิดเห็นที่ 4
ผมลองเชคดูแล้ว ไฟล์ที่ 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);
	}
กลับเปิดได้ปกติ


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


Ninenik 58.11.6.xxx 28-11-2019
1 2 Next






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