วิธีโหลดสเปรดชีตใน Go
Aspose.Cells FOSS สำหรับ Go โหลด workbook .xlsx ที่มีอยู่เข้าไปในหน่วยความจำเป็น Workbook ให้คุณเข้าถึง worksheets และ cells ทั้งหมดผ่าน API ของไลบรารีมาตรฐาน ติดตั้งโมดูลด้วย go get ก่อนเริ่มต้น.
คู่มือแบบทีละขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพคเกจ
go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26ตรวจสอบเวอร์ชันของโมดูลใน go.mod ของคุณหลังจากติดตั้ง.
ขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็น
import (
cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)ขั้นตอนที่ 3: สร้างและเติมข้อมูลในเวิร์กบุ๊กเพื่อโหลด
ตัวอย่างนี้เริ่มโดยการสร้างเวิร์กบุ๊กเพื่อให้มีไฟล์ .xlsx จริงสำหรับการโหลด — ในโค้ดของคุณเอง ให้แทนที่เส้นทางด้วยสเปรดชีตที่มีอยู่แล้ว:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Product")
ws.Cells().Set("B1", "Price")
ws.Cells().Set("A2", "Widget A")
ws.Cells().Set("B2", 12.99)
wb.Save("outputfiles/products.xlsx")ขั้นตอนที่ 4: อ่านค่าของเซลล์จากเวิร์กชีตที่โหลดแล้ว
เข้าถึงเวิร์กชีตแรกผ่าน Worksheets[0] และอ่านเซลล์แต่ละรายการด้วย Cells().Get(ref):
wb := cells_foss.NewWorkbook()
wb.Worksheets[0].Cells().Set("B2", 12.99)
ws2 := wb.Worksheets[0]
cell, err := ws2.Cells().Get("B2")
if err != nil {
fmt.Printf("Error reading cell: %v\n", err)
return
}
fmt.Printf("Price: %v\n", cell.Value)ขั้นตอนที่ 5: นับจำนวนเซลล์ทั้งหมดที่ถูกเติมข้อมูล
ใช้ Cells().All() เมื่อคุณต้องการวนลูปผ่านทุกเซลล์ที่ถูกตั้งค่า แทนที่จะอ่านอ้างอิงที่ทราบทีละหนึ่ง:
wb := cells_foss.NewWorkbook()
ws2 := wb.Worksheets[0]
ws2.Cells().Set("A1", "Product")
allCells := ws2.Cells().All()
for ref, c := range allCells {
fmt.Printf("%s = %v\n", ref, c.Value)
}ปัญหาที่พบบ่อยและวิธีแก้
Get คืนค่าข้อผิดพลาดสำหรับการอ้างอิงเซลล์. การอ้างอิงยังไม่ได้ถูกตั้งค่าในคอลเลกชัน ตรวจสอบว่าเซลล์ถูกเขียนด้วย Set, หรือ ตรวจสอบค่าที่ส่งกลับ error โดยชัดเจนก่อนใช้เซลล์.
ค่าดูเหมือนเป็นประเภทที่ผิด. Cell.Value สะท้อนประเภทใดก็ตามที่ถูกส่งไปยัง Set (string, int, float64, เป็นต้น) — ตรวจสอบด้วยการสวิตช์ประเภทหากคุณต้องการแยกสาขาตามประเภท Go พื้นฐาน.
เวิร์กบุ๊กที่โหลดไม่มีข้อมูลในชีตที่คาดหวัง. ยืนยันว่าคุณกำลังทำดัชนีรายการที่ถูกต้องใน Worksheets — ไฟล์งานสามารถมีแผ่นงานมากกว่าหนึ่งแผ่น, และข้อมูลเป้าหมายอาจไม่ได้อยู่บน Worksheets[0].
คำถามที่พบบ่อย
การโหลดเวิร์กบุ๊กต้องการให้ไฟล์ต้นฉบับยังคงอยู่บนดิสก์หรือไม่?
ใช่ — Workbook อ่านจากเส้นทางไฟล์ที่คุณระบุ เก็บไฟล์ต้นทางให้เข้าถึงได้ตลอดระยะเวลาการโหลด.
ฉันสามารถแก้ไขเซลล์หลังจากโหลดและบันทึกการเปลี่ยนแปลงกลับได้หรือไม่?
ใช่ — Cells().Set ทำงานบนเวิร์กบุ๊กที่โหลดได้เช่นเดียวกับเวิร์กบุ๊กที่สร้างใหม่; เรียก Save อีกครั้งเพื่อบันทึกการเปลี่ยนแปลงของคุณ.
มีวิธีใดที่จะหลีกเลี่ยงการโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำหรือไม่?
ใช่ — ใช้ StreamingReader.ProcessRows สำหรับไฟล์ขนาดใหญ่ที่คุณต้องการอ่านแถวแบบต่อเนื่องแทนที่จะโหลดเวิร์กบุ๊กทั้งหมด.