XLSX-Workbook-Class icon indicating copy to clipboard operation
XLSX-Workbook-Class copied to clipboard

Assuming Header name is Header1

Open DougHennig opened this issue 1 year ago • 3 comments

There are a few places that assume the Header object of a column is named Header1 but it may not be. Here's the fix:

  • SaveGridToWorkbook:
IF toGrid.HeaderHeight > 0                                                    && Change recommendation by Doug Hennig (if no headers, start in first row)
	lnRow = 1
	FOR lnCol=1 TO lnColCount
		loColumn = toGrid.Columns(laColOrder[lnCol, 2])
*** DH 2023-12-04: don't assume the header object is named Header1
*		this.SetCellValue(lnWB, lnSh, 1, lnCol, loColumn.Header1.Caption)
		loHeader = loColumn.Controls[1]
		this.SetCellValue(lnWB, lnSh, 1, lnCol, loHeader.Caption)
*** DH 2023-12-04: end of change
		this.SetCellStyle(lnWB, lnSh, 1, lnCol, loGrid.Columns(laColOrder[lnCol, 2]).HeaderStyleId)
		this.SetColumnWidth(lnWB, lnSh, lnCol, this.ConvertPixelsToExcelUnits(loColumn.Width))
	ENDFOR
  • GetColumnObject:
*** DH 2023-12-04: don't assume the header object is named Header1
*ADDPROPERTY(loColumn, "HeaderCaption", toGridColumn.Header1.Caption)
*ADDPROPERTY(loColumn, "HeaderFontBold", toGridColumn.Header1.FontBold)
*ADDPROPERTY(loColumn, "HeaderFontItalic", toGridColumn.Header1.FontItalic)
*ADDPROPERTY(loColumn, "HeaderFontName", toGridColumn.Header1.FontName)
*ADDPROPERTY(loColumn, "HeaderFontSize", toGridColumn.Header1.FontSize)
loHeader = toGridColumn.Controls[1]
ADDPROPERTY(loColumn, "HeaderCaption", loHeader.Caption)
ADDPROPERTY(loColumn, "HeaderFontBold", loHeader.FontBold)
ADDPROPERTY(loColumn, "HeaderFontItalic", loHeader.FontItalic)
ADDPROPERTY(loColumn, "HeaderFontName", loHeader.FontName)
ADDPROPERTY(loColumn, "HeaderFontSize", loHeader.FontSize)
*** DH 2023-12-04: end of change
  • SaveMultiGridToWorkbookEx: I didn't make the change but it's the same fix (two places)

DougHennig avatar Dec 04 '23 19:12 DougHennig

Doug—

Can you provide the line number of the places where you are referencing the code that you provided in the original issue report. The code block you reference does not match the code block that I have in Release 39 as shown:

image

I see where I can apply your suggestion at line 216 above. Please provide your line number ranges.

Greg

From: Doug Hennig @.> Sent: Monday, December 4, 2023 2:15 PM To: ggreen86/XLSX-Workbook-Class @.> Cc: Subscribed @.***> Subject: [ggreen86/XLSX-Workbook-Class] Assuming Header name is Header1 (Issue #102)

There are a few places that assume the Header object of a column is named Header1 but it may not be. Here's the fix:

  • SaveGridToWorkbook:

IF toGrid.HeaderHeight > 0 && Change recommendation by Doug Hennig (if no headers, start in first row)

    lnRow = 1

    FOR lnCol=1 TO lnColCount

           loColumn = toGrid.Columns(laColOrder[lnCol, 2])

*** DH 2023-12-04: don't assume the header object is named Header1

  •          this.SetCellValue(lnWB, lnSh, 1, lnCol, loColumn.Header1.Caption)
    
             loHeader = loColumn.Controls[1]
    
             this.SetCellValue(lnWB, lnSh, 1, lnCol, loHeader.Caption)
    

*** DH 2023-12-04: end of change

           this.SetCellStyle(lnWB, lnSh, 1, lnCol, loGrid.Columns(laColOrder[lnCol, 2]).HeaderStyleId)

           this.SetColumnWidth(lnWB, lnSh, lnCol, this.ConvertPixelsToExcelUnits(loColumn.Width))

    ENDFOR
  • GetColumnObject:

*** DH 2023-12-04: don't assume the header object is named Header1

*ADDPROPERTY(loColumn, "HeaderCaption", toGridColumn.Header1.Caption)

*ADDPROPERTY(loColumn, "HeaderFontBold", toGridColumn.Header1.FontBold)

*ADDPROPERTY(loColumn, "HeaderFontItalic", toGridColumn.Header1.FontItalic)

*ADDPROPERTY(loColumn, "HeaderFontName", toGridColumn.Header1.FontName)

*ADDPROPERTY(loColumn, "HeaderFontSize", toGridColumn.Header1.FontSize)

loHeader = toGridColumn.Controls[1]

ADDPROPERTY(loColumn, "HeaderCaption", loHeader.Caption)

ADDPROPERTY(loColumn, "HeaderFontBold", loHeader.FontBold)

ADDPROPERTY(loColumn, "HeaderFontItalic", loHeader.FontItalic)

ADDPROPERTY(loColumn, "HeaderFontName", loHeader.FontName)

ADDPROPERTY(loColumn, "HeaderFontSize", loHeader.FontSize)

*** DH 2023-12-04: end of change

  • SaveMultiGridToWorkbookEx: I didn't make the change but it's the same fix (two places)

— Reply to this email directly, view it on GitHubhttps://github.com/ggreen86/XLSX-Workbook-Class/issues/102, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGWB33KMBQXVQ4326JEXHVLYHYOKZAVCNFSM6AAAAABAGPOJPOVHI2DSMVQWIX3LMV43ASLTON2WKOZSGAZDINJUGA3DMNQ. You are receiving this because you are subscribed to this thread.Message ID: @.@.>>

ggreen86 avatar Dec 21 '23 19:12 ggreen86

Here's the code for version 39.

  • SaveGridToWorkbook: beginning at line 212:
IF toGrid.HeaderHeight > 0                                                    && Change recommendation by Doug Hennig (if no headers, start in first row)
	lnRow = tnBegRow
	FOR lnCol=1 TO lnColCount
		loColumn = toGrid.Columns(laColOrder[lnCol, 2])
*** DH 2023-12-04: don't assume the header object is named Header1
*		this.SetCellValue(lnWB, lnSh, lnRow, lnCol+tnBegCol-1, loColumn.Header1.Caption)
		loHeader = loColumn.Controls[1]
		this.SetCellValue(lnWB, lnSh, lnRow, lnCol+tnBegCol-1, loHeader.Caption)
*** DH 2023-12-04: end of change
		this.SetCellStyle(lnWB, lnSh, lnRow, lnCol+tnBegCol-1, loGrid.Columns(laColOrder[lnCol, 2]).HeaderStyleId)
		this.SetColumnWidth(lnWB, lnSh, lnCol+tnBegCol-1, this.ConvertPixelsToExcelUnits(loColumn.Width))
	ENDFOR
  • GetColumnObject: beginning at line 23:
*** DH 2023-12-04: don't assume the header object is named Header1
*ADDPROPERTY(loColumn, "HeaderCaption", toGridColumn.Header1.Caption)
*ADDPROPERTY(loColumn, "HeaderFontBold", toGridColumn.Header1.FontBold)
*ADDPROPERTY(loColumn, "HeaderFontItalic", toGridColumn.Header1.FontItalic)
*ADDPROPERTY(loColumn, "HeaderFontName", toGridColumn.Header1.FontName)
*ADDPROPERTY(loColumn, "HeaderFontSize", toGridColumn.Header1.FontSize)
loHeader = toGridColumn.Controls[1]
ADDPROPERTY(loColumn, "HeaderCaption", loHeader.Caption)
ADDPROPERTY(loColumn, "HeaderFontBold", loHeader.FontBold)
ADDPROPERTY(loColumn, "HeaderFontItalic", loHeader.FontItalic)
ADDPROPERTY(loColumn, "HeaderFontName", loHeader.FontName)
ADDPROPERTY(loColumn, "HeaderFontSize", loHeader.FontSize)
*** DH 2023-12-04: end of change

Merry Christmas to you and your family!

DougHennig avatar Dec 24 '23 14:12 DougHennig

I still see this issue in version 44.

DougHennig avatar Aug 15 '24 21:08 DougHennig