Jak załadować arkusz kalkulacyjny w Go
Aspose.Cells FOSS dla Go ładuje istniejący .xlsx workbook do pamięci jako Workbook, dając pełny dostęp do jego arkuszy i komórek za pośrednictwem standardowej biblioteki API. Zainstaluj moduł za pomocą go get przed rozpoczęciem.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26Sprawdź wersję modułu w swoim go.mod po instalacji.
Krok 2: Zaimportuj wymagane klasy
import (
cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)Krok 3: Utwórz i wypełnij Workbook do załadowania
Ten przykład najpierw tworzy workbook, aby mieć rzeczywisty plik .xlsx do załadowania — w swoim własnym kodzie zamień ścieżkę na istniejący spreadsheet:
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")Krok 4: Odczytaj wartości komórek z załadowanego Worksheet
Uzyskaj dostęp do pierwszego worksheet poprzez Worksheets[0] i odczytaj poszczególne komórki za pomocą 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)Krok 5: Wymień wszystkie wypełnione komórki
Użyj Cells().All(), gdy potrzebujesz iterować po każdej ustawionej komórce, zamiast odczytywać znane odwołania pojedynczo:
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)
}Typowe problemy i rozwiązania
Get zwraca błąd dla odwołania do komórki. Odwołanie nie zostało jeszcze ustawione w kolekcji. Potwierdź, że komórka została zapisana z Set, lub sprawdź zwrócony error wyraźnie przed użyciem komórki.
Wartości wyglądają na niewłaściwy typ. Cell.Value odzwierciedla dowolny typ przekazany do Set (string, int, float64 i tak dalej) — sprawdź to za pomocą przełącznika typów, jeśli musisz rozgałęziać się w zależności od podstawowego typu Go.
Załadowany skoroszyt nie zawiera danych na oczekiwanym arkuszu. Potwierdź, że indeksujesz właściwy wpis w Worksheets — skoroszyt może mieć więcej niż jeden arkusz, a docelowe dane mogą nie znajdować się na Worksheets[0].
Najczęściej zadawane pytania
Czy ładowanie skoroszytu wymaga, aby oryginalny plik nadal istniał na dysku?
Tak — Workbook odczytuje z podanej ścieżki pliku. Utrzymuj plik źródłowy dostępny przez cały czas trwania ładowania.
Czy mogę zmodyfikować komórkę po załadowaniu i zapisać zmiany z powrotem?
Tak — Cells().Set działa na załadowanym skoroszycie w ten sam sposób, co na nowo utworzonym; wywołaj ponownie Save, aby zapisać zmiany.
Czy istnieje sposób, aby uniknąć wczytywania całego pliku do pamięci?
Tak — użyj StreamingReader.ProcessRows dla dużych plików, gdy potrzebujesz tylko odczytywać wiersze kolejno, zamiast ładować cały skoroszyt.