การตั้งค่าการพิมพ์ไฟล์ Excel ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 7
เขียนเมื่อ 3 ปีก่อน โดย Ninenik Narkdeeตั้งค่าการพิมพ์ phpspreadsheet
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ ตั้งค่าการพิมพ์ phpspreadsheet
ไปที่
Copy







เนื้อหาต่อไปนี้ จะมาดูเกี่ยวกับ การจัดการต่างๆ เกี่ยวกับการพิมพ์
สำหรับเอกสารไฟล์ excel เช่น การตั้งค่าหน้ากระดาษ การกำหนดขนาดเอกสาร
เหล่านี้ เป็นต้น
1. การตั้งหน้ากระดาษและขนาดเอกสาร
เราสามารถกำหนดการตั้งหน้ากระดาษในแนวตั้ง หรือแนวแนอน ด้วยคำสั่ง setOrientation() และกำหนดขนาดเอกสารหรือกระดาษ
ด้วยคำสั่ง setPaperSize() การกำหนดขนาดเอกสารก็เช่น ขนาด A4, A5, Letter เป็นต้น
// ดูตัวแปรค่าคงที่อื่นๆ เพิ่มเติมได้ที่ // https://phpoffice.github.io/PhpSpreadsheet/master/PhpOffice/PhpSpreadsheet/Worksheet/PageSetup.html // กำหนดการตั้งหน้ากระดาษ แนวตั้ง ORIENTATION_PORTRAIT / แนวนอน ORIENTATION_LANDSCAPE $sheet->getPageSetup() ->setOrientation(PhpOfficePhpSpreadsheetWorksheetPageSetup::ORIENTATION_LANDSCAPE); // การกำหนดขนาดกระดาษ $sheet->getPageSetup() ->setPaperSize(PhpOfficePhpSpreadsheetWorksheetPageSetup::PAPERSIZE_A4);เปรียบเทียบกับหน้าจัดการใน Excel

2. การกำหนดมาตราส่วนการพิมพ์
การกำหนด scale ในการพิมพ์เราสามารถใช้คำสั่งต่างๆ ดังนี้
// กรณีกำหนดเป็น % ค่าเริ่มต้นคือ 100 //$sheet->getPageSetup()->setScale(50); // กรณีกับเป็นความกว้างเนื้อหา x หน้า ที่แสดงต่อความสูงเต็ม y หน้า $sheet->getPageSetup()->setFitToWidth(1); $sheet->getPageSetup()->setFitToHeight(0);การกำหนด scale ในค่า % จะมีผลให้เดิม ค่าเริ่มต้นเท่ากับ 100% หมายถึง ส่วนของความกว้างของเนื้อหา
แสดง 100% ต่อขนาดความกว้างของหน้ากระดาษ หรือก็คือแสดงในมาตราส่วนปกติ แต่ถ้าหากเรากำหนดเป็น 50
นั้นหมายความว่า ส่วนของเนื้อหา จะถูกย่อขนาดลงในสัดส่วนความกว้างที่ลดลงเหลือ 50%
ตัวอย่างผลลัพธ์

ส่วนกรณีใช้การกำหนดแบบ setFitTo นั้น ค่าเริ่มต้น หรือค่าที่แสดงปกติ คือ setFitToWidth(1) และ setFitToHeight(0)
ความหมายคือให้สัดส่วนความกว้างเนื้อหาเท่ากับความกว้างปกติใน 1 หน้า และแสดงโดยไม่มีการบีบให้เต็มพื้นที่ตามความสูง
เราลองปรับค่าเป็น 1 กับ 1 จะได้เป็น
$sheet->getPageSetup()->setFitToWidth(1); $sheet->getPageSetup()->setFitToHeight(1);ผลลัพธ์ที่ได้คือ ข้อมูลถูกบีบขนาดให้แสดงอยู่ในหน้าเดียวเต็มพื้นที่ความสูง หรือก็คือ เดิมมี 3 หน้า จะถูกบีบให้เหลือ 1 หน้า

3. การจัดกึ่งกลางกะะดาษแนวตั้ง และแนวนอน
$sheet->getPageSetup()->setHorizontalCentered(true); // จัดกึ่งกลางข้อมูลตรงกลางในแนวนอน / true | false $sheet->getPageSetup()->setVerticalCentered(false); // จัดกึ่งกลางข้อมูลตรงกลางในแนวตั้ง / true | falseผลลัพธ์ตัวอย่างการพิมพ์กรณีจัดตรงกลางในแนวนอน ในแนวตั้ง และจัดตรงกลางในแนวนอนกับในแนวตั้ง



4. การกำหนด Margins
เราสามารถกำหนด margin ของและด้าน รวมถึง margin ของ header และ footer ด้วยคำสั่ง ดังนี้
$sheet->getPageMargins()->setTop(0.75); $sheet->getPageMargins()->setBottom(0.75); $sheet->getPageMargins()->setLeft(0.7); $sheet->getPageMargins()->setRight(0.7); $sheet->getPageMargins()->setHeader(0.3); $sheet->getPageMargins()->setFooter(0.3);เปรียบเทียบกับหน้าจัดการใน Excel

5. การกำหนด Header และ Footer
เราสามารถจัดการส่วนของ Header และ Footer ได้ใช้คำสั่ง ดังนี้
$sheet->getHeaderFooter() ->setOddHeader('&C&H&KFF0000&"tahoma,Bold"&16รายชื่อจังหวัดในประเทศไทย'); $sheet->getHeaderFooter() ->setOddFooter('&L&B' . $spreadsheet->getProperties()->getTitle() . '&Rหน้า &P จาก &N');ค่าเหล่านี้รองรับการกำหนดและใช้งานในไฟล์ excel นามสกุลไฟล์ Xlsx
&L กำหนดข้อความชิดซ้าย &P กำหนดหน้า ปัจจุบัน &N กำหนดจำนวนหน้าทั้งหมด &font size กำหนดขนาดตัวอักษร หน่วย point ตัวอย่าง &16 &K กำหนดสีข้อความ ตัวอย่างสีแดง &KFF0000 &S กำหนดเส้นขีดฆ่าข้อความ &X กำหนดอักษรตัวยก &Y กำหนดอักษรตัวห้อย &C กำหนดข้อความแสดงตรงกลาง &D กำหนดวันที่ &T กำหนดเวลา &G กำหนดรูปเป็นพื้นหลัง &U กำหนดขีดเส้นใต้ข้อความ &E กำหนดขีดเส้นใต้ข้อความสองเส้น &R กำหนดข้อความชิดขวา &Z กำหนด path ที่อยู่ของไฟล์ excel &F กำหนดชื่อไฟล์ excel &A กำหนดชื่อแผ่นงาน &+ กำหนดบวกค่าเลขหน้าเพิ่ม ตัวอย่าง &P+1 &- กำหนดลบค่าเลขหน้าลง ตัวอย่าง &P-1 &"font name,font type" กำหนดชื่อฟอนท์ และชนิดของฟอนท์ ตัวอย่าง &"tahoma,Bold" &"-,Bold" กำหนดตัวอักษรตัวหนา &B กำหนดตัวอักษรตัวหนา &"-,Regular" กำหนดตัวอักษรปกติ &"-,Italic" กำหรดตัวอักษรตัวเอียง &I กำหนดตัวอักษรตัวเอียง &"-,Bold Italic" กำหนดตัวอักษรตัวหนา และเอียง &O กำหนดเส้นขอบนอก &H กำหนดการมีเงา
ตัวอย่างผลลัพธ์

เปรียบเทียบกับหน้าจัดการใน Excel

การกำหนด Header และ Footer แยกหน้าคู่ หน้าคี่
การกำหนด Header และ Footer ในตัวอย่างข้างต้น เป็นการกำหนดที่มีผลเหมือนกันในทุกๆ หน้า แต่เราสามารถกำหนดให้สามารถมีรูปแบบ
แตกต่างกันได้ระหว่างหน้าคู่ และหน้าคี่ โดยเพิ่มคำสั่งให้มีการใช้งาน ใช้รูปแบบที่แตกต่างกันระห่างหน้าคู่และหน้าคี่ จากนั้นก็กำหนดส่วน
ของหน้าคู่เพิ่มเข้าไป ตามรูปแบบคำสั่งดังนี้
// ใช้งานการกำหนดรูปแบบต่างกัน ระหว่างหน้าคู่ และหน้าคี่ $sheet->getHeaderFooter()->setDifferentOddEven(true); // true | false // กำหนดรปแบบสำหรับหน้าคี่ ด้วยคำสั่ง setOddHeader() และ setOddFooter() $sheet->getHeaderFooter() ->setOddHeader('&C&H&KFF0000&"tahoma,Bold"&16รายชื่อจังหวัดในประเทศไทย'); $sheet->getHeaderFooter() ->setOddFooter('&L&B' . $spreadsheet->getProperties()->getTitle() . '&Rหน้า &P จาก &N'); // เพิ่มรูปแบบสำหรับหน้าคู่ ด้วยคำสั่ง setEvenHeader() และ setEvenFooter() $sheet->getHeaderFooter() ->setEvenHeader('&C&H&KFF0000&"tahoma,Bold"&16รายชื่อจังหวัดในประเทศไทย หน้าคู่'); $sheet->getHeaderFooter() ->setEvenFooter('&L&B หน้าคู่ ' . $spreadsheet->getProperties()->getTitle() . '&Rหน้า &P จาก &N');นอกจากกนั้น เรายังสามารถกำหนดเพิ่มเติมให้กับหน้าแรก ให้มีรูปแบบแตกต่างจากหน้าอื่นๆ ด้วยการใช้งานคำสั่ง
// ใช้งานการกำหนดรูปแบบที่แตกต่าง เฉพาะหน้าแรก $sheet->getHeaderFooter()->setDifferentFirst(true); // กำหนดรปแบบสำหรับหน้าแรก ด้วยคำสั่ง setFirstHeader() และ setFirstFooter() $sheet->getHeaderFooter() ->setFirstHeader('&C&H&K3F48CC&"tahoma,Bold"&16รายชื่อจังหวัดในประเทศไทย หน้าแรก'); $sheet->getHeaderFooter() ->setFirstFooter('&L&B หน้าแรก' . $spreadsheet->getProperties()->getTitle() . '&Rหน้า &P จาก &N');สำหรับการแทรกรูป สามารถทำได้ ภายใต้เงื่อนไขดังนี้
จากที่ลองทดสอบพบว่า การเพิ่มรูปจะใช้การกำหนด้วยรหัส &G เข้าไปในตำแหน่งที่ต้องการ การแทรกรูปจะแทรกได้ตำแหน่งละ 1
ซึ่งจะมีทั้งหมด 6 ตำแหน่ง ได้แก่
IMAGE_HEADER_LEFT IMAGE_HEADER_CENTER IMAGE_HEADER_RIGHT IMAGE_FOOTER_LEFT IMAGE_FOOTER_CENTER IMAGE_FOOTER_RIGHTแต่ก่อนที่เราจะไปกำหนดโค้ดเพื่อแสดงรูปใน Header หรือ Footer เราต้องทำการเพิ่มรูปเข้าไปก่อน ด้วยคำสั่งในรูปแบบดังนี้
// สร้างรูปสำหรับใช้งานใน Header และ Footer $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing(); $drawing->setName('footer background2'); // กำหนดชื่อ $drawing->setPath('./images/footer-background2.png'); // กำหนด path ของไฟล์ $drawing->setHeight(36); // กำหนดความสูง // ดูคำสั่งสำหรับปรับรูปเพิ่มเติม // https://phpoffice.github.io/PhpSpreadsheet/master/PhpOffice/PhpSpreadsheet/Worksheet/HeaderFooterDrawing.htmlหลังกำหนดรูปที่จะใช้งานแล้ว จากนั้นก็ทำการเพิ่มเข้าไปใน Header และ Footer
// ส่วนสำหรับการเพิ่มรูป เราจะต้องระบุตำแหน่งที่จะใช้งานลงไปด้วย ในที่นี้เป็น IMAGE_FOOTER_LEFT // เวลานำไปใช้ เราต้องไปใช้ในส่วนของ Footer ด้านซ้าย แนวทางการนำไปกำหนด เช่น ถ้าไว้ด้านหน้าสุดของล่างซ้าย เป็น &L&G $sheet->getHeaderFooter() ->addImage($drawing, \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter::IMAGE_FOOTER_LEFT);และสุดท้ายกำหนดการเรียกแสดงรูปโดยใช้รหัสโค้ด &G
// กำหนดรปแบบสำหรับหน้าคี่ ด้วยคำสั่ง setOddHeader() และ setOddFooter() $sheet->getHeaderFooter() ->setOddFooter('&L&G&B' . $spreadsheet->getProperties()->getTitle() . 'ดีมาก&Rหน้า &P จาก &N');จากที่ทดสอบ การแทรกรูปจะไม่รองรับ กรณีใช้งานคำสั่ง setFirstFooter(), setFirstHeader() และ setEvenHeader(), setEvenFooter()
จะรองรับเฉพาะคำสั่ง setOddHeader() กับ setOddFooter()
ตัวอย่างการกำหนดรูป 3 รูปใช้สำหรับ footer 3 ตำแหน่ง สามารถทำได้ดังนี้
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing(); $drawing->setName('footer background2'); $drawing->setPath('./images/footer-background2.png'); $drawing->setHeight(36); $drawing2 = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing(); $drawing2->setName('footer background2'); $drawing2->setPath('./images/footer-background2.png'); $drawing2->setHeight(36); $drawing3 = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing(); $drawing3->setName('footer background2'); $drawing3->setPath('./images/footer-background2.png'); $drawing3->setHeight(36); $sheet->getHeaderFooter() ->addImage($drawing, \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter::IMAGE_FOOTER_LEFT); $sheet->getHeaderFooter() ->addImage($drawing2, \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter::IMAGE_FOOTER_CENTER); $sheet->getHeaderFooter() ->addImage($drawing3, \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter::IMAGE_FOOTER_RIGHT); // แสดงรูปด้านซ้าย ตรงกลาง และด้านขวา (&L&G | &C&G | &R%G ) $sheet->getHeaderFooter() ->setOddFooter('&L&G&B' . $spreadsheet->getProperties()->getTitle() . '&C&Gดีมาก&R&Gหน้า &P จาก &N');
6. การแสดงแถวรายการซ้ำ
อธิบายไว้ในบทความตอนที่แล้ว ในหัวข้อสุดท้าย เพิ่มเติม คลิก http://niik.in/933
7. การซ่อนแสดงเส้นตาราง Excel หรือเส้น gridlines
เราสามารถกำหนดให้แสดงเส้นตารางของ excel ในหน้าพิมพ์โดยใช้คำสั่ง
$sheet->setShowGridlines(true); // true / false
8. กำหนดพ้ืนที่การพิมพ์แบบระบุพิกัด
เราสามารถกำหนดช่วงพิกัด cell ที่ต้องการพิมพ์ สมมติเช่น พิมพ์เฉพาะ 5 จังหวัดแรกของแต่ละหน้า จะได้เป็น
$sheet->getPageSetup()->setPrintArea('A2:C6,A29:C34');เปรียบเทียบกับหน้าจัดการใน Excel

เนื้อหาการปรับแต่ง และการใช้งาน PhpSpreadsheet ในตอนหน้าจะเป็นอะไร รอติดตาม
กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ

อ่านต่อที่บทความ
-
31 Jul2019การแทรกรูปใน Excel ไฟล์ ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 8 อ่าน 3,488
เนื้อหาตอนต่อไปนี้ เรามาดูเกี่ยวกับการแทรกรูปภาพ ในไฟล์ Excel ตัวอย่างการ
เนื้อหาที่เกี่ยวข้อง
-
12 Jul2019ออกรายงานเป็น Excel ไฟล์ ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 1 อ่าน 8,674
เนื้อหานี้จะเป็นเริ่มต้นการใช้งาน PhpSpreadsheet สำหรับการออกรายงานหรือสร้าง
-
13 Jul2019การจัดการ cell ในไฟล์ Excel ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 2 อ่าน 5,280
เนื้อหานี้ เราจะมาต่อจากตอนที่แล้ว ที่เราได้ทำความรู้จักกับ PhpSpreadsheet แล
-
15 Jul2019จัดรูปแบบข้อมูลในพิกัด Cell ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 3 อ่าน 3,788
เนื้อหาในตอนต่อไปนี้ เราจะมาเพิ่มเติมจากตอนที่แล้ว เกี่ยวกับ การจัดการกับ
-
23 Jul2019จัดรูปแบบการแสดงใน Excel ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 4 อ่าน 4,768
เนื้อหาตอนต่อไปนี้ เราจะมาดูในเรื่องของการจัดการกับรูปแบบ การแสดงข้อมูลใน
-
24 Jul2019กำหนด Style ให้กับพิกัด Cell ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 5 อ่าน 4,110
ต่อจากตอนที่แล้ว เกี่ยวกับการจัดการรูปแบบการแสดงของพิกัด cell ทบทวน
-
25 Jul2019กำหนด Style ให้กับพิกัด Cell ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 6 อ่าน 5,177
ต่อจากตอนที่แล้วเกียวกับการจัดรูปแบบการแสดงข้อมูลใน cell ทบทวนตอนที่แล้ว
-
กำลังอ่านเนื้อหานี้อยู่26 Jul2019การตั้งค่าการพิมพ์ไฟล์ Excel ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 7 อ่าน 4,760
เนื้อหาต่อไปนี้ จะมาดูเกี่ยวกับ การจัดการต่างๆ เกี่ยวกับการพิมพ์ สำหรับเอ
-
31 Jul2019การแทรกรูปใน Excel ไฟล์ ด้วย PhpSpreadsheet เบื้องต้น ตอนที่ 8 อ่าน 3,488
เนื้อหาตอนต่อไปนี้ เรามาดูเกี่ยวกับการแทรกรูปภาพ ในไฟล์ Excel ตัวอย่างการ
Tags::
phpspreadsheet
ตั้งค่าการพิมพ์
URL สำหรับอ้างอิง
Top
Copy
ขอบคุณทุกการสนับสนุน
![]()