การทำงานกับการจัดการสเปรดชีต
การทำงานกับการจัดการสเปรดชีต
การจัดการสเปรดชีตครอบคลุมพื้นผิววัตถุประจำวันของ crate: แผ่นงาน, คอลเลกชันเซลล์, ค่าที่มีประเภท, สูตร, การจัดรูปแบบ, และคุณลักษณะเชิงโครงสร้างที่ทำให้สมุดงานใช้งานได้ง่าย จุดเริ่มต้นจะเป็นเสมอ Workbook.
Worksheets
แผ่นงานถูกจัดการผ่านคอลเลกชันแผ่นงานของสมุดงาน — การเข้าถึงแบบอ่านผ่าน get_worksheets, การเปลี่ยนแปลงผ่าน get_worksheets_mut. แผ่นงานระบุด้วยดัชนี (get(0)) หรือชื่อ (get_by_name), เปลี่ยนชื่อด้วย set_name, และเพิ่มด้วย add_worksheet:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Data")?;
}การเข้าถึงเซลล์และค่าที่มีประเภท
เซลล์สามารถระบุได้แบบสไตล์ A1 หรือแบบตัวเลข. get_by_index(row, column) เหมาะกับเลย์เอาต์ที่สร้างขึ้น:
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Month")?;
for month in 1..=12_u32 {
cells
.get_by_index(month, 0)
.put_value_string(format!("Month {month}"))?;
}เมื่ออ่านกลับ, display_string_value จะคืนค่าข้อความที่แสดงและ value_type จะรายงานประเภทที่จัดเก็บไว้.
สูตรที่มีผลลัพธ์แคชไว้
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;ค่าที่แคชไว้คือสิ่งที่ Excel แสดงก่อนการคำนวณใหม่ครั้งแรก — จัดให้ค่าเหล่านี้เพื่อให้ผู้ใช้ไฟล์เห็นผลลัพธ์ที่ถูกต้องทันที.
Styling
CellStyle รวม Font, Fill และ Borders; StyleFlag ควบคุมว่าการอัปเดตจะใช้แง่มุมของสไตล์ใดบ้าง, เพื่อให้การจัดรูปแบบที่มีอยู่ยังคงอยู่เมื่อคุณไม่ได้เขียนทับมัน. NumberFormat กำหนดวิธีการแสดงค่าต่างๆ.
การตั้งค่าหน้าและการนำทาง
PageSetup จัดการการจัดวางการพิมพ์: PaperSizeType, PageOrientationType และระยะขอบ. FreezePane ทำให้แถวหัวเรื่องคงมองเห็นได้ขณะเลื่อน, และการมองเห็นแถวและคอลัมน์ใช้ VisibilityType.
โครงสร้าง: ตาราง, ชื่อ, ความคิดเห็น, ไฮเปอร์ลิงก์
ListObjectแปลงช่วงข้อมูลเป็นตารางที่มีโครงสร้างพร้อมการจัดรูปแบบTableStyleTypeและแถวรวมยอดTotalsCalculation.DefinedNameและDefinedNameCollectionจัดการช่วงที่ตั้งชื่อ.Comment/CommentCollectionและHyperlink/HyperlinkCollectionครอบคลุมการทำหมายเหตุและการนำทาง.
เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- เก็บการยืมที่เปลี่ยนแปลงได้ (
get_worksheets_mut,get_cells_mut) ไว้ภายในบล็อกสโคป; บันทึกเวิร์กบุ๊กหลังจากบล็อกปิด. - ใช้
get_by_indexสำหรับลูปและเลย์เอาต์ที่สร้างขึ้น; ชื่อ A1 สำหรับตำแหน่งคงที่. - ใช้สไตล์ด้วย
StyleFlagเพื่อให้การจัดรูปแบบที่ไม่เกี่ยวข้องไม่ถูกเปลี่ยนแปลง. - ตั้งชื่อช่วงสำคัญด้วย
DefinedNameแทนการกำหนดที่อยู่แบบคงที่.
ปัญหาที่พบบ่อย
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
| ข้อผิดพลาดการยืมขณะบันทึกเวิร์กบุ๊ก | การยืมแผ่นงานที่เปลี่ยนแปลงได้ยังคงอยู่ | ปิดบล็อกสโคปก่อนเรียก save |
| สูตรแสดงค่า 0 ใน Excel | ไม่ได้ระบุค่าที่แคชไว้ | ใช้ put_formula_with_cached_value พร้อมผลลัพธ์ที่คาดหวัง |
| ไม่พบแผ่นงาน | ชื่อไม่ตรงกัน | ระบุโดยดัชนีหรือเช็คการสะกดของ set_name |
FAQ
ฉันจะเพิ่ม worksheet ที่สองได้อย่างไร?
เรียก add_worksheet บน workbook, แล้วดึงออกจากคอลเลกชัน worksheet ด้วยดัชนีหรือชื่อ.
ฉันสามารถอ่านและเขียนในขั้นตอนเดียวได้หรือไม่?
ใช่ — โหลดด้วย Workbook::load_xlsx, แก้ไขผ่าน get_worksheets_mut, และ save ไปยังพาธเดียวกันหรือพาธใหม่.
ตัวตั้งค่าประเภททำการแปลงค่าหรือไม่?
ไม่มีการแปลงค่าใด ๆ ถูกนำมาใช้: ตัวตั้งค่า put_value_* แต่ละตัวจะเก็บประเภทดั้งเดิมของมัน; display_string_value แสดงข้อความที่เห็นเมื่ออ่าน.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
Workbook.add_worksheet | เพิ่มแผ่นงานลงในสมุดงาน |
Worksheet.set_name | เปลี่ยนชื่อชีต |
Worksheet.get_cells_mut | คอลเลกชันเซลล์ที่แก้ไขได้ |
CellMut.put_value_string | ตัวตั้งค่าสตริงแบบกำหนดชนิด |
CellMut.put_formula_with_cached_value | สูตรพร้อมผลลัพธ์ที่แคช |
CellStyle | การจัดรูปแบบแบบอักษร, การเติมสี, และเส้นขอบ |
StyleFlag | เลือกว่าลักษณะสไตล์ใดบ้างที่จะนำไปใช้ |
PageSetup | การพิมพ์และการจัดเค้าโครงหน้า |
ListObject | ตารางที่มีโครงสร้าง |