รุ่นโครงสร้างสมุดงานที่โหลดแล้ว
รุ่นเชิงโครงสร้างช่วยให้ผู้อ่านคงสแนปชอตที่มีต้นทุนต่ำไว้ได้ และปฏิเสธการเดินทางหลังจากโครงสร้างเชิงโทโพโลยีของสมุดงานที่ตนอาศัยเปลี่ยนไปแล้ว
แหล่งที่มาของรุ่น
| เอนจิน | รุ่นที่เก็บเซลล์ | รุ่นคอลเลกชันเวิร์กชีต |
|---|---|---|
| Classic XLS | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration หรือ TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
คุณสมบัติแต่ละรายการเป็นค่า UInt64 แบบอ่านอย่างเดียว และปริมาณที่แน่นอนของการเปลี่ยนแปลงไม่ถือเป็นสัญญา
การดำเนินการที่ทำให้ล้าสมัย
การสร้าง ลบ หรือล้างเซลล์ที่จัดเก็บไว้จะเปลี่ยนรุ่นที่เก็บเซลล์เมื่อโครงสร้างเปลี่ยนจริง
การเพิ่มหรือลบแถวหรือคอลัมน์ การย้ายพิกัด การเพิ่มหรือการทำให้เซลล์แบบแพ็กปรากฏเป็นรูปธรรม และการสร้างดัชนีเซลล์ใหม่อย่างชัดเจน ยังทำให้สถานะการเดินทางของที่เก็บเซลล์ล้าสมัยด้วย
การเพิ่ม ลบ ย้าย หรือล้างเวิร์กชีตจะเปลี่ยนรุ่นคอลเลกชันเวิร์กชีตเมื่อคอลเลกชันเปลี่ยนจริง
การดำเนินการที่ไม่ทำให้ล้าสมัย
การเปลี่ยนค่า สูตร ค่าแคช หรือรูปแบบของเซลล์ที่มีอยู่จะไม่เปลี่ยนรุ่นที่เก็บเซลล์ของเซลล์นั้น
การเปลี่ยนชื่อหรือการเปิดใช้งานเวิร์กชีตจะไม่เปลี่ยนรุ่นคอลเลกชันเวิร์กชีต และการย้ายที่ไม่มีผล การลบที่ไม่มีของจะลบ หรือการล้างคอลเลกชันที่ว่างอยู่แล้ว จะคงรุ่นปัจจุบันไว้
การตรวจสอบ
เรียก XlsValidateStructureGeneration ก่อนการเดินหน้าหรือการอ่านสถานะการเดินทางที่สร้างไว้สำหรับรุ่นก่อนหน้า
ความไม่ตรงกันจะทำให้เกิด EXLSLoadedCellCursorInvalidated ช่วยให้ผู้เรียกแยกแยะการทำให้ล้าสมัยเชิงโครงสร้างออกจากข้อผิดพลาดของข้อมูลหรือรูปแบบได้
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
เคอร์เซอร์สมุดงานคลาสสิก
IXLSWorkbook.CreateLoadedCellCursor จับรุ่นรวมของสมุดงานคลาสสิกและตรวจสอบก่อนการเรียก MoveNext และ Current ทุกครั้ง
เคอร์เซอร์เดินทางผ่านกิ่งก้านพื้นที่จัดเก็บกระจายที่จัดสรรไว้โดยตรงด้วยสถานะเคอร์เซอร์คงที่ และส่งกลับค่า TXLSLoadedCellSnapshot ที่เป็นของตน
โอเวอร์โหลดแบบบูลีนจะตรึงว่าจะรวมเซลล์ว่างที่จัดเก็บไว้ซึ่งมีสไตล์เป็นของตัวเองหรือไม่ รูปแบบแถว คอลัมน์ และเวิร์กชีตที่สืบทอดจะไม่สร้างรายการว่างในเคอร์เซอร์
เคอร์เซอร์สมุดงาน XLSX
TXLSXWorkbook.CreateLoadedCellCursor จับสิทธิ์เช่าอายุการใช้งานของสมุดงานและรุ่นโครงสร้างรวมที่ใช้ร่วมกันระหว่างที่เก็บเซลล์ของเวิร์กชีตทุกแผ่นและคอลเลกชันเวิร์กชีต
เส้นทางแบบรูปธรรมอ่านบล็อกแถวกระจายโดยตรง ส่วนเส้นทางแบบแพ็กใช้ตัววนซ้ำแบบแพ็กซ้ำโดยไม่ทำให้เซลล์ปรากฏเป็นรูปธรรมหรือคงพอยเตอร์ภายในไว้ในสแนปชอต
โอเวอร์โหลดแบบบูลีนสามารถรวมเซลล์ว่างที่จัดเก็บไว้ซึ่งมีแต่สไตล์ไว้ในการแทนค่าพื้นที่จัดเก็บใดก็ได้ ขณะที่ตัวยึดตำแหน่ง Empty และ Null ที่ไม่มีสไตล์ยังคงถูกแยกออก
การปล่อยสมุดงานจะทำให้สิทธิ์เช่าล้าสมัยก่อนที่พื้นที่จัดเก็บเวิร์กชีตจะถูกปล่อย การเข้าถึงเคอร์เซอร์ครั้งต่อไปจึงทำให้เกิด EXLSLoadedCellCursorInvalidated
ขอบเขตการทำงานพร้อมกัน
การตรวจสอบรุ่นให้การตรวจจับแบบรู้ล้มเหลวทันทีเท่านั้น และไม่ทำให้การแก้ไขสมุดงานพร้อมกับการเดินทางปลอดภัยต่อเธรด