วิธีโหลดสเปรดชีตใน Go

วิธีโหลดสเปรดชีตใน 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 สำหรับไฟล์ขนาดใหญ่ที่คุณต้องการอ่านแถวแบบต่อเนื่องแทนที่จะโหลดเวิร์กบุ๊กทั้งหมด.

ดูเพิ่มเติม

 ภาษาไทย