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

SaveGridToWorkbook automatically create formula from cell value

Open DougHennig opened this issue 4 months ago • 2 comments

I added some new functionality to SaveGridToWorkbook if you're interested. If the value of a cell in a grid starts with '=', treat it like a formula. Here's the code:

*-*		Add the cell data values and cell formatting
		SELECT &lcGridAlias
		SCAN
			lnRow = lnRow + 1
			RAISEEVENT(this, "OnShowStatusMessage", 3, lnRow)
			FOR lnCol=1 TO lnColCount
				loColumn = toGrid.Columns(laColOrder[lnCol, 2])
				lcField  = loColumn.ControlSource
				lxCellValue = EVALUATE(lcField)
				IF loGrid.Columns(laColOrder[lnCol, 2]).FieldPercent
					lxCellValue = lxCellValue / 100
				ENDIF
*** DH 2024-02-23: treat a value starting with "=" as a formula
*				this.SetCellValue(lnWB, lnSh, lnRow, lnCol+tnBegCol-1, lxCellValue)
				if vartype(lxCellValue) = 'C' and left(lxCellValue, 1) = '='
					This.SetCellFormula(lnWB, lnSh, lnRow, lnCol+tnBegCol-1, strtran(lxCellValue, '{ROW}', transform(lnRow), -1, -1, 1))
				else
					this.SetCellValue(lnWB, lnSh, lnRow, lnCol+tnBegCol-1, lxCellValue)
				endif vartype(lxCellValue) = 'C' ...
*** DH 2024-02-23: end of change
				IF loGrid.Columns(laColOrder[lnCol, 2]).DynamicProperties

DougHennig avatar Oct 03 '24 22:10 DougHennig