ทำงานกับชั้นโมเดล Workbook
ทำงานกับชั้นโมเดลของสมุดงาน
ใต้ API ที่ผู้ใช้มองเห็น, crate จะเก็บชั้นโมเดลข้อมูลธรรมดาที่สะท้อนแพ็กเกจ XLSX: struct ของค่า, โมเดลกฎ, และที่เก็บข้อมูลร่วม. แอปพลิเคชันส่วนใหญ่จะไม่สัมผัสประเภทเหล่านี้โดยตรง, แต่จะปรากฏเมื่อคุณตรวจสอบสมุดงานที่โหลดไว้ในเชิงลึกหรือมีส่วนร่วมกับ crate เอง.
ประเภทค่า
ColorValue เก็บส่วนประกอบสี ARGB เป็นฟิลด์ a, r, g, b แบบธรรมดา, พร้อมกับ equals และ get_hash_code สำหรับการเปรียบเทียบ. การจัดรูปแบบตัวเลขระดับโมเดลอยู่ใน NumberFormatValue, ซึ่งสนับสนุน clone เพื่อคัดลอกคำนิยามรูปแบบระหว่างบันทึกโมเดล.
โมเดลกฎ
กฎคุณภาพข้อมูลมีแบบจำลองคู่: ValidationModel เปิดเผย areas, validation_type, alert_style, operator ของกฎ, และนิพจน์ formula1 / formula2 เป็นฟิลด์; FormatConditionModel และ ConditionalFormattingModel มีบทบาทเช่นเดียวกันสำหรับบันทึกการจัดรูปแบบตามเงื่อนไข. สิ่งเหล่านี้สร้างขึ้นด้วย default และเติมค่าแบบฟิลด์ต่อฟิลด์.
ที่เก็บสตริงร่วม
ไฟล์ XLSX จัดเก็บข้อความเซลล์ที่ซ้ำกันในตาราง shared-strings. โมเดล SharedStringRepository จำลองเป็น interner:
internเพิ่มสตริงและคืนดัชนีของมัน (ใช้รายการที่มีอยู่แล้วซ้ำ),try_get_valueแปลงดัชนีกลับเป็นสตริงของมัน,clearรีเซ็ตรีโพสทอรี.
Diagnostics
DiagnosticBag รวบรวมปัญหาแบบมีโครงสร้างผ่าน add ระหว่างการดำเนินการของโมเดล ระดับ API ข้อมูลเดียวกันจะถูกส่งถึงคุณผ่าน LoadDiagnostics เมื่อโหลดเวิร์กบุ๊ก — ดู ภาพรวมคุณสมบัติ.
เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ควรใช้ API ที่ผู้ใช้มองเห็น (
Workbook,Worksheet, cell collections) — ไม่จำเป็นต้องใช้ชั้นโมเดลสำหรับงานสเปรดชีตทั่วไป. - ถือโครงสร้างโมเดลเป็นบันทึกข้อมูล: สร้างด้วย
default, แล้วตั้งค่าฟิลด์อย่างชัดเจน. - เมื่อทำการตรวจสอบไฟล์ที่มีรูปแบบผิดพลาด ให้รวมแฟล็กการซ่อมแซม
LoadOptionsกับการวินิจฉัยที่ตัวโหลดรายงาน.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | การแก้ไข |
|---|---|---|
| สตริงที่แชร์ซ้ำกัน | ข้ามการทำงานของ interner | ส่งข้อความผ่าน SharedStringRepository.intern |
| กฎการตรวจสอบถูกละเลย | ฟิลด์โมเดลไม่ครบ | ตั้งค่า validation_type, operator และ formula1 บน ValidationModel |
FAQ
ฉันต้องการชั้นโมเดลเพื่อเขียนสเปรดชีตหรือไม่?
ไม่. Workbook API ครอบคลุมการสร้าง, การแก้ไข, และการบันทึกเวิร์กบุ๊ก; ชั้นโมเดลเป็นพื้นฐานของมัน.
ทำไมโครงสร้างโมเดลจึงใช้คอนสตรัคเตอร์ default?
พวกมันเป็นบันทึกข้อมูลธรรมดาที่สะท้อนโครงสร้าง XLSX — default ให้บันทึกว่างเปล่าที่คุณเติมค่าฟิลด์ทีละฟิลด์.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
ColorValue | บันทึกสี ARGB (a, r, g, b) |
NumberFormatValue.clone | คัดลอกการกำหนดรูปแบบตัวเลข |
ValidationModel | บันทึกกฎการตรวจสอบ (พื้นที่, ตัวดำเนินการ, สูตร) |
FormatConditionModel.default | บันทึกกฎการจัดรูปแบบตามเงื่อนไขที่ว่างเปล่า |
SharedStringRepository.intern | ทำ intern สตริงและส่งคืนดัชนีของมัน |
SharedStringRepository.try_get_value | แก้ไขดัชนีที่ interned |
DiagnosticBag.add | บันทึกการวินิจฉัยแบบมีโครงสร้าง |