ทำงานกับการจัดการสเปรดชีต
การทำงานกับการจัดการสเปรดชีต
คู่มือนี้อธิบายขั้นตอนการดำเนินงานประจำวันในการสร้างและแก้ไขสเปรดชีต: สร้างเวิร์กบุ๊ก, เขียนค่าลงในเซลล์, เพิ่มสูตร, สร้างตาราง, และส่งออกเป็น CSV.
สร้างเวิร์กบุ๊กและเขียนเซลล์
NewWorkbook() คืนค่าเวิร์กบุ๊กที่มีแผ่นงานหนึ่งแผ่นอยู่แล้ว เขียนค่าด้วย Cells().Set(ref, value):
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Item")
ws.Cells().Set("B1", "Category")
ws.Cells().Set("C1", "Price")
ws.Cells().Set("A2", "Widget A")
ws.Cells().Set("B2", "Gadgets")
ws.Cells().Set("C2", 12.99)
wb.Save("outputfiles/inventory.xlsx")อ่านค่าเซลล์กลับ
Cells().Get(ref) คืนค่า *Cell สำหรับอ้างอิงพร้อมกับข้อผิดพลาดหากอ้างอิงไม่ถูกต้อง:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("C2", 12.99)
cell, err := ws.Cells().Get("C2")
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("C2 = %v\n", cell.Value)ใช้ Cells().All() เพื่อแสดงรายการทุกเซลล์ที่มีข้อมูลในคอลเลกชันเมื่อคุณต้องการวนซ้ำทั้งแผ่นงาน.
เพิ่มสูตร
Cell.SetFormula เก็บสตริงสูตรในเซลล์ สร้างเซลล์ก่อนด้วย Set แล้วจึงแนบสูตร — สูตรจะถูกประมวลผลโดย Excel หรือ LibreOffice เมื่อเปิดไฟล์ ไม่ได้โดยไลบรารี:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("D2", nil)
cell, _ := ws.Cells().Get("D2")
cell.SetFormula("C2*2")สร้างตารางจากข้อมูล
เมื่อช่วงข้อมูลของคุณเต็มแล้ว Worksheet.AddTable จะเปลี่ยนเป็นตารางที่มีโครงสร้างและตั้งชื่อ:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Item")
ws.Cells().Set("A2", "Widget A")
tbl := ws.AddTable("A1:C2")
tbl.HasHeaderRow = true
tbl.StyleName = "TableStyleMedium6"
fmt.Printf("Created table %q covering %s\n", tbl.Name, tbl.Range)ส่งออกเป็น CSV
Workbook.ExportToCSV เขียนดัชนีแผ่นงานที่ระบุลงในไฟล์ CSV ด้วยตัวคั่นที่คุณเลือก:
wb := cells_foss.NewWorkbook()
if err := wb.ExportToCSV(0, "outputfiles/inventory.csv", ','); err != nil {
fmt.Fprintf(os.Stderr, "Error exporting: %v\n", err)
os.Exit(1)
}ในทิศทางตรงกันข้าม Workbook.ImportFromCSV(path, sheetName, delimiter) จะอ่านไฟล์ CSV เข้าสู่แผ่นงานที่ตั้งชื่อไว้.
ลบเซลล์
Cells().Remove(ref) ลบค่าของเซลล์:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A2", "Widget A")
if err := ws.Cells().Remove("A2"); err != nil {
fmt.Printf("Error removing cell: %v\n", err)
}เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- สร้างเซลล์ด้วย
Setก่อนเรียกใช้SetFormulaบนเซลล์นั้น —SetFormulaทำงานกับ*Cellที่มีอยู่แล้ว ไม่ใช่สตริงอ้างอิงเปล่า. - เมื่อส่งออกเวิร์กบุ๊กที่มีหลายแผ่นงาน, พารามิเตอร์ sheet index ของ
ExportToCSVกำหนดว่าแผ่นงานใดจะถูกส่งออก — ดัชนี0คือแผ่นงานแรก. - ใช้
Cells().All()สำหรับการวนซ้ำแบบอ่านหนักทั่วทั้งแผ่นงาน แทนการเรียกGetในลูปสำหรับทุกอ้างอิงที่เป็นไปได้.
ปัญหาที่พบบ่อย
| Issue | Cause | แก้ไข |
|---|---|---|
SetFormula ไม่มีผล | ถูกเรียกใช้บนการอ้างอิงเซลล์ที่ไม่เคยสร้างด้วย Set ก่อน | เรียก ws.Cells().Set(ref, nil) เพื่อสร้างเซลล์, จากนั้น Get มันและเรียก SetFormula |
| การส่งออก CSV ว่างเปล่าหรือแผ่นงานผิด | ดัชนีแผ่นงานที่ส่งให้ ExportToCSV ไม่ถูกต้อง | ยืนยันว่าดัชนีตรงกับตำแหน่งของแผ่นงานที่ต้องการใน Workbook.Worksheets |
Get ส่งคืนข้อผิดพลาด | การอ้างอิงเซลล์ไม่มีอยู่ในคอลเลกชัน | ยืนยันว่าการอ้างอิงได้ถูกตั้งค่าไว้ก่อนหน้านี้ด้วย Set หรือจัดการกรณี “not found” อย่างชัดเจน |
FAQ
Cells().Remove ลบทั้งแถวหรือคอลัมน์ทั้งหมดหรือไม่?
No — มันลบค่าของเซลล์เดียวที่อ้างอิงที่กำหนด.
ฉันสามารถสร้างตารางบนช่วงที่มีคอลัมน์สูตรอยู่แล้วได้หรือไม่?
Yes — AddTable ทำงานกับช่วงเซลล์ตามที่เขียน; สูตรในช่วงจะถูกเก็บไว้.
API Reference สรุป
| คลาส / เมธอด | คำอธิบาย |
|---|---|
Workbook.NewWorkbook | สร้างเวิร์กบุ๊กใหม่ที่มีแผ่นงานหนึ่งแผ่น |
Cells.Set / Get / Remove / All | เขียน, อ่าน, ลบ, และแสดงรายการเซลล์ |
Cell.SetFormula / GetFormula | แนบและอ่านสตริงสูตร |
Worksheet.AddTable | สร้างตารางเชิงโครงสร้างบนช่วงเซลล์ |
Workbook.ExportToCSV / ImportFromCSV | แปลงระหว่าง XLSX และ CSV |
ดูเพิ่มเติม
- ภาพรวมฟีเจอร์: การจัดรูปแบบ, การตรวจสอบข้อมูล, ตาราง, ภาพ, และการสตรีมมิ่ง
- Aspose.Cells — Enterprise Product Family
- Aspose.Cells — Enterprise Documentation