เอกสาร HotXLS

รุ่นโครงสร้างสมุดงานที่โหลดแล้ว

รุ่นเชิงโครงสร้างช่วยให้ผู้อ่านคงสแนปชอตที่มีต้นทุนต่ำไว้ได้ และปฏิเสธการเดินทางหลังจากโครงสร้างเชิงโทโพโลยีของสมุดงานที่ตนอาศัยเปลี่ยนไปแล้ว

แหล่งที่มาของรุ่น

เอนจินรุ่นที่เก็บเซลล์รุ่นคอลเลกชันเวิร์กชีต
Classic XLSTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration หรือ TXLSXCells.StructureGenerationTXLSXSheets.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

ขอบเขตการทำงานพร้อมกัน

การตรวจสอบรุ่นให้การตรวจจับแบบรู้ล้มเหลวทันทีเท่านั้น และไม่ทำให้การแก้ไขสมุดงานพร้อมกับการเดินทางปลอดภัยต่อเธรด

ดูเพิ่มเติม