Praca z zarządzaniem arkuszami kalkulacyjnymi

Praca z zarządzaniem arkuszami kalkulacyjnymi

Praca z zarządzaniem arkuszami kalkulacyjnymi

Ten przewodnik opisuje codzienne operacje związane z tworzeniem i modyfikowaniem arkuszy kalkulacyjnych: tworzenie skoroszytów, zapisywanie wartości komórek, dodawanie formuł, budowanie tabel oraz eksport do CSV.


Utwórz skoroszyt i zapisz komórki

NewWorkbook() zwraca skoroszyt z już istniejącym jednym arkuszem. Zapisz wartości przy użyciu 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")

Odczytaj komórki

Cells().Get(ref) zwraca *Cell dla odniesienia wraz z błędem, jeśli odniesienie jest nieprawidłowe:

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)

Użyj Cells().All(), aby wyliczyć każdą wypełnioną komórkę w kolekcji, gdy potrzebujesz iterować po całym arkuszu.

Dodaj formułę

Cell.SetFormula przechowuje ciąg formuły w komórce. Najpierw utwórz komórkę za pomocą Set, a następnie dołącz formułę — formuła jest oceniana przez Excel lub LibreOffice przy otwarciu, a nie przez bibliotekę:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]

ws.Cells().Set("D2", nil)
cell, _ := ws.Cells().Get("D2")
cell.SetFormula("C2*2")

Zbuduj tabelę na podstawie danych

Gdy zakres danych jest wypełniony, Worksheet.AddTable przekształca go w ustrukturyzowaną, nazwaną tabelę:

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)

Eksportuj do CSV

Workbook.ExportToCSV zapisuje wskazany indeks arkusza do pliku CSV z separatorem wybranym przez Ciebie:

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)
}

W odwrotnej kolejności, Workbook.ImportFromCSV(path, sheetName, delimiter), odczytuje plik CSV do nazwanego arkusza.

Usuń komórkę

Cells().Remove(ref) czyści wartość komórki:

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)
}

Wskazówki i najlepsze praktyki

  • Utwórz komórkę za pomocą Set przed wywołaniem SetFormula na niej — SetFormula działa na istniejącym *Cell, a nie na gołym ciągu referencji.
  • Podczas eksportowania skoroszytu zawierającego wiele arkuszy, parametr indeksu arkusza w ExportToCSV określa, który arkusz zostanie wyeksportowany — indeks 0 to pierwszy arkusz.
  • Użyj Cells().All() do intensywnego odczytu całego arkusza, zamiast wywoływać Get w pętli dla każdej możliwej referencji.

Częste problemy

IssueCauseNapraw
SetFormula nie ma wpływuWywołano na odwołaniu do komórki, które nigdy nie zostało najpierw utworzone przy użyciu SetWywołaj ws.Cells().Set(ref, nil), aby utworzyć komórkę, następnie Get ją i wywołaj SetFormula
Eksport CSV jest pusty lub zawiera niewłaściwy arkuszPrzekazano nieprawidłowy indeks arkusza do ExportToCSVUpewnij się, że indeks odpowiada pozycji zamierzonego arkusza w Workbook.Worksheets
Get zwraca błądOdwołanie do komórki nie istnieje w kolekcjiPotwierdź, że odwołanie zostało wcześniej ustawione przy użyciu Set, lub obsłuż przypadek „not found” explicite

FAQ

Czy Cells().Remove usuwa cały wiersz lub kolumnę?

Nie — usuwa wartość pojedynczej komórki w podanym odwołaniu.

Czy mogę utworzyć tabelę na zakresie, który już ma kolumnę z formułą?

Tak — AddTable działa na podanym zakresie komórek; formuły w zakresie są zachowane.


API Reference Podsumowanie

Klasa / MetodaOpis
Workbook.NewWorkbookUtwórz nowy skoroszyt z jednym arkuszem
Cells.Set / Get / Remove / AllZapisuj, odczytuj, usuwaj i wyliczaj komórki
Cell.SetFormula / GetFormulaDołącz i odczytaj ciąg formuły
Worksheet.AddTableUtwórz tabelę strukturalną w zakresie komórek
Workbook.ExportToCSV / ImportFromCSVKonwertuj pomiędzy XLSX a CSV

Zobacz także

 Polski