การทำงานกับการจัดการสเปรดชีต

การทำงานกับการจัดการสเปรดชีต

การทำงานกับการจัดการสเปรดชีต

การจัดการสเปรดชีตครอบคลุมพื้นผิววัตถุประจำวันของ 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ตารางที่มีโครงสร้าง

ดูเพิ่มเติม

 ภาษาไทย