Skip to content

Commit

Permalink
This add new exported function GetHeaderFooter
Browse files Browse the repository at this point in the history
  • Loading branch information
15535382838 committed Nov 15, 2023
1 parent 5e247de commit 5b129f6
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
26 changes: 26 additions & 0 deletions sheet.go
Original file line number Diff line number Diff line change
Expand Up @@ -1289,6 +1289,32 @@ func (f *File) SetHeaderFooter(sheet string, opts *HeaderFooterOptions) error {
return err
}

// GetHeaderFooter provides a function to get worksheet header and footer by
// given worksheet name.
func (f *File) GetHeaderFooter(sheet string) (*HeaderFooterOptions, error) {
var opts *HeaderFooterOptions
ws, err := f.workSheetReader(sheet)
if err != nil {
return opts, err
}
if ws.HeaderFooter == nil {
return opts, err
}
opts = &HeaderFooterOptions{
AlignWithMargins: ws.HeaderFooter.AlignWithMargins,
DifferentFirst: ws.HeaderFooter.DifferentFirst,
DifferentOddEven: ws.HeaderFooter.DifferentOddEven,
ScaleWithDoc: ws.HeaderFooter.ScaleWithDoc,
OddHeader: ws.HeaderFooter.OddHeader,
OddFooter: ws.HeaderFooter.OddFooter,
EvenHeader: ws.HeaderFooter.EvenHeader,
EvenFooter: ws.HeaderFooter.EvenFooter,
FirstHeader: ws.HeaderFooter.FirstHeader,
FirstFooter: ws.HeaderFooter.FirstFooter,
}
return opts, err
}

// ProtectSheet provides a function to prevent other users from accidentally or
// deliberately changing, moving, or deleting data in a worksheet. The
// optional field AlgorithmName specified hash algorithm, support XOR, MD4,
Expand Down
18 changes: 15 additions & 3 deletions sheet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,16 @@ func TestGetPageLayout(t *testing.T) {
assert.EqualError(t, err, ErrSheetNameInvalid.Error())
}

func TestSetHeaderFooter(t *testing.T) {
func TestHeaderFooter(t *testing.T) {
f := NewFile()
// Test get header and footer with default header and footer settings
opts, err := f.GetHeaderFooter("Sheet1")
assert.NoError(t, err)
assert.Equal(t, (*HeaderFooterOptions)(nil), opts)
// Test get header and footer on not exists worksheet
_, err = f.GetHeaderFooter("SheetN")
assert.EqualError(t, err, "sheet SheetN does not exist")

assert.NoError(t, f.SetCellStr("Sheet1", "A1", "Test SetHeaderFooter"))
// Test set header and footer on not exists worksheet
assert.EqualError(t, f.SetHeaderFooter("SheetN", nil), "sheet SheetN does not exist")
Expand All @@ -252,15 +260,19 @@ func TestSetHeaderFooter(t *testing.T) {
EvenFooter: text,
FirstHeader: text,
}))
assert.NoError(t, f.SetHeaderFooter("Sheet1", &HeaderFooterOptions{
expected := &HeaderFooterOptions{
DifferentFirst: true,
DifferentOddEven: true,
OddHeader: "&R&P",
OddFooter: "&C&F",
EvenHeader: "&L&P",
EvenFooter: "&L&D&R&T",
FirstHeader: `&CCenter &"-,Bold"Bold&"-,Regular"HeaderU+000A&D`,
}))
}
assert.NoError(t, f.SetHeaderFooter("Sheet1", expected))
opts, err = f.GetHeaderFooter("Sheet1")
assert.NoError(t, err)
assert.Equal(t, expected, opts)
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetHeaderFooter.xlsx")))
}

Expand Down

0 comments on commit 5b129f6

Please sign in to comment.