diff --git a/sheet.go b/sheet.go index daf6f4c..b9201a3 100644 --- a/sheet.go +++ b/sheet.go @@ -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, diff --git a/sheet_test.go b/sheet_test.go index bb9a786..044af91 100644 --- a/sheet_test.go +++ b/sheet_test.go @@ -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") @@ -252,7 +260,7 @@ 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", @@ -260,7 +268,11 @@ func TestSetHeaderFooter(t *testing.T) { 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"))) }