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

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

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

คู่มือนี้อธิบายขั้นตอนการดำเนินงานประจำวันในการสร้างและแก้ไขสเปรดชีต: สร้างเวิร์กบุ๊ก, เขียนค่าลงในเซลล์, เพิ่มสูตร, สร้างตาราง, และส่งออกเป็น 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 ในลูปสำหรับทุกอ้างอิงที่เป็นไปได้.

ปัญหาที่พบบ่อย

IssueCauseแก้ไข
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

ดูเพิ่มเติม

 ภาษาไทย