Práce se správou tabulek

Práce se správou tabulek

Práce se správou tabulek

Tento průvodce provádí krok za krokem každodenní operace při vytváření a úpravě tabulek: vytváření sešitů, zapisování hodnot do buněk, přidávání vzorců, tvorbu tabulek a export do CSV.


Vytvořit sešit a zapisovat buňky

NewWorkbook() vrací sešit s již přítomným jedním listem. Zapište hodnoty pomocí 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")

Načíst buňky zpět

Cells().Get(ref) vrací *Cell pro odkaz spolu s chybou, pokud je odkaz neplatný:

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)

Použijte Cells().All() k vypsání každé vyplněné buňky ve sbírce, když potřebujete iterovat přes celý list.

Přidat vzorec

Cell.SetFormula ukládá řetězec vzorce do buňky. Nejprve vytvořte buňku pomocí Set, pak připojte vzorec — vzorec je vyhodnocen aplikací Excel nebo LibreOffice při otevření, nikoli knihovnou:

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

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

Vytvořit tabulku nad daty

Jakmile je váš rozsah dat naplněn, Worksheet.AddTable jej převede na strukturovanou, pojmenovanou tabulku:

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)

Exportovat do CSV

Workbook.ExportToCSV zapíše zadaný index listu do souboru CSV s oddělovačem dle vašeho výběru:

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

V opačném směru Workbook.ImportFromCSV(path, sheetName, delimiter) načte soubor CSV do pojmenovaného listu.

Odstranit buňku

Cells().Remove(ref) vymaže hodnotu buňky:

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

Tipy a osvědčené postupy

  • Vytvořte buňku pomocí Set před voláním SetFormula na ní — SetFormula pracuje s existující *Cell, ne s pouhým referenčním řetězcem.
  • Při exportu sešitu, který obsahuje více listů, parametr indexu listu ExportToCSV určuje, který list se exportuje — index 0 je první list.
  • Použijte Cells().All() pro iteraci zaměřenou na čtení celého listu místo volání Get v cyklu přes všechny možné reference.

Časté problémy

IssueCauseOpravit
SetFormula nemá žádný vlivVoláno na odkaz buňky, který nebyl nejprve vytvořen pomocí SetZavolejte ws.Cells().Set(ref, nil) pro vytvoření buňky, pak ji Get a zavolejte SetFormula
Export CSV je prázdný nebo obsahuje nesprávný listNesprávný index listu předán do ExportToCSVOvěřte, že index odpovídá požadované pozici listu v Workbook.Worksheets
Get vrací chybuOdkaz na buňku neexistuje v kolekciPotvrďte, že odkaz byl dříve nastaven pomocí Set, nebo výslovně ošetřete případ „not found“ explicitně

FAQ

Maže Cells().Remove celý řádek nebo sloupec?

Ne — vymaže hodnotu jedné buňky na zadaném odkazu.

Mohu vytvořit tabulku nad rozsahem, který již má sloupec s formulí?

Ano — AddTable pracuje s rozsahem buněk tak, jak je napsáno; formule v rozsahu jsou zachovány.


API Reference Shrnutí

Třída / MetodaPopis:
Workbook.NewWorkbookVytvořte nový sešit s jedním listem
Cells.Set / Get / Remove / AllZapisovat, číst, odstraňovat a procházet buňky
Cell.SetFormula / GetFormulaPřipojit a přečíst řetězec vzorce
Worksheet.AddTableVytvořit strukturovanou tabulku nad rozsahem buněk
Workbook.ExportToCSV / ImportFromCSVPřevod mezi XLSX a CSV

Viz také:

 Čeština