เอกสาร HotXLS

เมธอด CreateLoadedCellCursor

สร้างเคอร์เซอร์แบบดึงข้อมูลเหนือเซลล์ที่จัดเก็บไว้ในสมุดงาน Classic XLS ที่โหลดแล้ว พร้อมตัวเลือกให้รวมเซลล์ว่างที่มีสไตล์เป็นของตัวเอง

ไวยากรณ์

function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
function CreateLoadedCellCursor(
  AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;

ลำดับการเดินทางและต้นทุน

เคอร์เซอร์จะไปยังเวิร์กชีตตามลำดับในคอลเลกชัน แล้วไปยังเซลล์ตามแถวและคอลัมน์จากน้อยไปมาก

SheetIndex, Row และ Col เป็นพิกัดสาธารณะที่เริ่มนับจาก 1

การเดินทางเดินตามกิ่งก้านของพื้นที่จัดเก็บแบบกระจายแบบคลาสสิกที่จัดสรรไว้โดยตรง สถานะเคอร์เซอร์จึงคงที่และไม่จัดสรรอาร์เรย์ขนาดเท่าขอบเขตแถวหรือคอลัมน์ของเวิร์กชีต

โอเวอร์โหลดที่ไม่มีพารามิเตอร์จะข้ามเซลล์ว่างและคงสัญญาการเดินทางค่าและสูตรเดิมไว้

ส่ง True เพื่อรวมเซลล์ว่างที่จัดเก็บไว้ซึ่ง XF ของเซลล์แตกต่างจากรูปแบบที่สืบทอดจากแถว คอลัมน์ หรือเวิร์กชีต

การจัดรูปแบบที่สืบทอดเพียงอย่างเดียวจะไม่ทำให้พิกัดว่างปรากฏขึ้นหรือถูกส่งออก

ฟิลด์สแนปชอต

ฟิลด์ความหมาย
SheetIndex / SheetNameข้อมูลประจำตัวเวิร์กชีตเจ้าของ ณ ขณะจับภาพ
Row / Colพิกัดเซลล์ที่เริ่มนับจาก 1
StyleIndexดัชนีสไตล์ XF แบบคลาสสิก
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula หรือ xlckBlank
Valueค่า Variant ที่เป็นของตนซึ่งจับไว้สำหรับเซลล์ปัจจุบัน
Formulaข้อความสูตรสำหรับเซลล์สูตร มิฉะนั้นเป็นสตริงว่าง

สตริงและค่า Variant ใน TXLSLoadedCellSnapshot เป็นค่าที่เป็นของตนและไม่เปิดเผยออบเจกต์เซลล์ภายใน

สำหรับเซลล์สูตร Value เป็นไปตามความหมายการเข้าถึงค่าปกติของสมุดงานคลาสสิก รวมถึงการคำนวณเมื่อจำเป็น

สำหรับ xlckBlank ค่า Value จะเป็น Unassigned, Formula ว่างเปล่า และ StyleIndex ระบุ XF ที่จัดเก็บไว้ของเซลล์

สถานะและการทำให้ล้าสมัย

State เป็น xlccBeforeFirst จนกว่า MoveNext แรกสำเร็จ เป็น xlccActive ขณะที่ Current พร้อมใช้งาน และเป็น xlccEof หลังการเดินทางเสร็จสิ้น

การอ่าน Current ก่อนเซลล์แรกหรือหลังสิ้นสุดไฟล์จะทำให้เกิด EXLSLoadedCellCursorState

การสร้างหรือลบเซลล์ที่จัดเก็บไว้ การเพิ่ม ลบ หรือย้ายเวิร์กชีต หรือการแทนที่โมเดลสมุดงาน จะทำให้เคอร์เซอร์ล้าสมัย

จากนั้นการเรียก MoveNext หรือ Current ครั้งถัดไปจะทำให้เกิด EXLSLoadedCellCursorInvalidated

การเปลี่ยนค่า สูตร หรือรูปแบบของเซลล์ที่มีอยู่จะไม่ทำให้เคอร์เซอร์ล้าสมัย และสแนปชอตที่จับไว้ก่อนหน้ายังคงไม่เปลี่ยนแปลง

ตัวอย่าง

Cursor := Workbook.CreateLoadedCellCursor;
while Cursor.MoveNext do
begin
  Cell := Cursor.Current;
  Memo1.Lines.Add(Format('%s!R%dC%d = %s',
    [Cell.SheetName, Cell.Row, Cell.Col, VarToStr(Cell.Value)]));
end;

ดูเพิ่มเติม