สอบถามการใช้งาน PhpSpreadsheet ป้องกัน Workbook ด้วยรหัสผ่าน
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามการใช้งาน PhpSpreadsheet ป้องกัน Workbook ด้วยรหัสผ่าน
สอบถามการใช้งาน PhpSpreadsheet ป้องกัน Workbook ด้วยรหัสผ่าน
จากบทความนี้ ได้ลองทดสอบทำตามหัวข้อ "การจัดการการป้องกัน cell" สามารถล็อกการแก้ไขเซลล์ได้ปกติ
https://www.ninenik.com/กำหนด_Style_ให้กับพิกัด_Cell_ด้วย_PhpSpreadsheet_เบื้องต้น_ตอนที่_5-932.html
แต่ถ้าอยากป้องกันตั้งแต่ตอนเปิดไฟล์ให้ถามรหัสผ่านเหมือนในรูป สามารถทำได้ไหมครับ ขอบคุณครับ
https://www.ninenik.com/กำหนด_Style_ให้กับพิกัด_Cell_ด้วย_PhpSpreadsheet_เบื้องต้น_ตอนที่_5-932.html
แต่ถ้าอยากป้องกันตั้งแต่ตอนเปิดไฟล์ให้ถามรหัสผ่านเหมือนในรูป สามารถทำได้ไหมครับ ขอบคุณครับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
PhpSpreadsheet เท่าที่ได้ลองใช้ ยังไม่รองรับสำหรับการทำการป้องกัน workbook
ป้องกันได้เฉพาะ cell แต่สามารถประยุกต์สร้างเป็นไฟล์ zip แล้วกำหนดรหัสผ่านให้กับไฟล์
zip แทนได้ โดยใช้ PhpZip PHP Library ตามลิ้งค์ที่แนะนำด้านล่าง
หรืออีกวิธีลองใช้งานตัว Secure Spreadsheet มาใช้งานร่วมก็ได้ โดยเป็นลักษณะของการ
นำไฟล์ excel ที่เราสร้างด้วย PhpSpreadsheet มาเข้ารหัสอีกทีในรูปแบบคำสั่งง่ายๆ
1 2 3 4 5 6 7 8 | require "vendor/autoload.php" ; use Nick\SecureSpreadsheet\Encrypt; $test = new Encrypt(); $test ->input( 'Book1.xlsx' ) // ไฟล์ต้นฉบับ ->password( '111' ) // กำหนดรหัสผ่าน ->output( 'bb.xlsx' ); // ไฟล์ที่มีการกำหนดรหัสผ่านเข้าไปแล้ว |
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
แนะนำ PhpZip PHP Library สำหรับจัดการไฟล์ Zip | อ่าน 7,330 |

ความคิดเห็นที่
2
จะเลือกใช้งาน Secure Spreadsheet แล้วมีข้อสงสัยครับ
คือ PhpSpreadsheet ผมใช้วิธีดาวน์โหลดไฟล์ Excel ทันทีที่มีการเรียกใช้งานการสร้างไฟล์ โดยที่ไม่ได้บันทึกไฟล์ไว้บน server ...แบบนี้จะสามารถใช้งานร่วมกันได้ไหมครับ ขอบคุณครับ
คือ PhpSpreadsheet ผมใช้วิธีดาวน์โหลดไฟล์ Excel ทันทีที่มีการเรียกใช้งานการสร้างไฟล์ โดยที่ไม่ได้บันทึกไฟล์ไว้บน server ...แบบนี้จะสามารถใช้งานร่วมกันได้ไหมครับ ขอบคุณครับ
1 2 3 4 5 6 7 8 9 10 11 12 | $writer = new Xlsx( $spreadsheet ); // ชื่อไฟล์ $file_export = "Excel-" . date ( "dmY-Hs" ); header( 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ); header( 'Content-Disposition: attachment;filename="' . $file_export . '.xlsx"' ); header( "Content-Transfer-Encoding: binary " ); exit (); |

ความคิดเห็นที่
3
เท่าที่ดู Secure Spreadsheet น่าจะเข้ารหัสได้เฉพาะข้อมูลที่เป็นไฟล์ excel แล้ว
เบื้องต้นคงต้องสร้างเป็นไฟล์ก่อน แล้วถึงเข้ารหัสจึงจะได้ หากจะประยุกต์ อาจจะสร้าง
ไฟล์ชั่วคราวเพื่อสร้างไฟล์ต้นฉบับ หลังจากส่งออกแล้วก็ทำการลบไฟล์ต้นฉบับทิ้ง
แนวทางเบื้องต้นตามโค้ดด้านล่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 | $writer = new Xlsx( $spreadsheet ); $output_file = "hello_world.xlsx" ; // กำหนดชื่อไฟล์ excel ที่ต้องการ $output_file_pass = "hello_world_pass.xlsx" ; // กำหนดชื่อไฟล์ excel ที่ต้องการกำหนดรหัสผ่าน $writer ->save( $output_file ); // สร้างไฟล์ชั่วคราว $test = new Encrypt(); header( 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ); header( 'Content-Disposition: attachment;filename="' . $output_file_pass ); header( "Content-Transfer-Encoding: binary " ); $output = $test ->input( $output_file ) ->password( '111' ) unlink( $output_file ); // ลบไฟล์ |

ความคิดเห็นที่
4
ทดสอบตาม คห.3 ใช้งานได้แล้ว ขอบคุณมากครับผม

ขอบคุณทุกการสนับสนุน
![]()