Freeze Rows and Columns

This guide will show how to freeze columns and rows from scrolling in a workbook sheet.

Before you begin

You should get your API key from your UniCloud account.

If this is your first time using UniOffice SDK, follow this guide to set up a local development environment.

Clone the project repository

In your terminal, clone the examples repository. It contains the Go code we will be using for this guide.

git clone https://github.com/unidoc/unioffice-examples

To get the example navigate to the path spreadsheet/freeze-rows-cols folder in the unioffice-examples directory.

cd unioffice-examples/spreadsheet/freeze-rows-cols/

How it works

// Copyright 2017 FoxyUtils ehf. All rights reserved.
package main
import (
"log"
"math/rand"
"os"
"github.com/unidoc/unioffice/common/license"
"github.com/unidoc/unioffice/spreadsheet"
)
func init() {
// Make sure to load your metered License API key prior to using the library.
// If you need a key, you can sign up and create a free one at https://cloud.unidoc.io
err := license.SetMeteredKey(os.Getenv(`UNIDOC_LICENSE_API_KEY`))
if err != nil {
panic(err)
}
}
func main() {
ss := spreadsheet.New()
defer ss.Close()
sheet := ss.AddSheet()
row := sheet.AddRow()
row.AddCell()
for i := 0; i < 99; i++ {
row.AddCell().SetString("Header")
}
for i := 0; i < 100; i++ {
row = sheet.AddRow()
row.AddCell().SetString("Header")
for j := 0; j < 99; j++ {
row.AddCell().SetNumber(rand.Float64() * 100)
}
}
// freeze the first row and column
sheet.SetFrozen(true, true)
/* this is equivalent to
v := sheet.InitialView()
v.SetState(sml.ST_PaneStateFrozen)
v.SetYSplit(1)
v.SetXSplit(1)
v.SetTopLeft("B2")
*/
if err := ss.Validate(); err != nil {
log.Fatalf("error validating sheet: %s", err)
}
ss.SaveToFile("freeze-rows-cols.xlsx")
}

The example starts by importing the necessary libraries. Then initializes the package by setting the license API key. Line 21-23 creates a new workbook and adds a new sheet to it. Then line 27-29 populates the first 100 rows of the first column with the text "Header". The first 100 cells of the first row are also populated with the same text using the for loop in lines 30-46.

Then these two rows and columns are frozen using sheet.SetFrozen(true, true). Then spreadsheet is written to file in lines 53.

Run the code

To run the code use the following command.

go run main.go

Sample Output

sample spreadsheet with frozen cols and rows

Got any Questions?

We're here to help you.