fix: exportul Excel din GridExtras respecta ordinea de afisare a coloanelor
gridutils.copytoexcel parcurgea grid.Columns() pe indexul de creare, care in VFP nu are legatura cu ColumnOrder. Coloanele se sorteaza acum dupa ColumnOrder inainte de a construi lista de campuri, deci exportul iese in ordinea de pe ecran, inclusiv dupa ce utilizatorul muta coloane (ordine salvata de savegridpreferences). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YB2eA3Wd31DZiXjzVRc6VJ
This commit is contained in:
@@ -2434,7 +2434,7 @@ DEFINE CLASS gridutils AS form
|
|||||||
PROCEDURE copytoexcel
|
PROCEDURE copytoexcel
|
||||||
*!* LPARAMETERS tcXLSFile, tcSheet, tvWorkArea, tcExcelFieldList, tcTableFieldList, tcTableForExpr
|
*!* LPARAMETERS tcXLSFile, tcSheet, tvWorkArea, tcExcelFieldList, tcTableFieldList, tcTableForExpr
|
||||||
#DEFINE ALPHANUMERICCHR "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz1234567890"
|
#DEFINE ALPHANUMERICCHR "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz1234567890"
|
||||||
LOCAL lnCounter, loColumn, lcXLSFile, lcSheetName, lcAliasWas, lcGridAlias, ;
|
LOCAL lnCounter, lnOrder, laOrder, loColumn, lcXLSFile, lcSheetName, lcAliasWas, lcGridAlias, ;
|
||||||
lcExcelFieldList, lcTableFieldList, lcTableForExpression, loHeaderObject, ;
|
lcExcelFieldList, lcTableFieldList, lcTableForExpression, loHeaderObject, ;
|
||||||
lcFileName, lcAction, lcPath, loExcelApp, loWorkBook, lcKeyName
|
lcFileName, lcAction, lcPath, loExcelApp, loWorkBook, lcKeyName
|
||||||
m.lcXLSFile = "C:\" + SYS(2015) + ".xls"
|
m.lcXLSFile = "C:\" + SYS(2015) + ".xls"
|
||||||
@@ -2445,8 +2445,15 @@ DEFINE CLASS gridutils AS form
|
|||||||
*!* m.lcTableForExpression = FILTER(this.gridobject.recordsource)
|
*!* m.lcTableForExpression = FILTER(this.gridobject.recordsource)
|
||||||
m.lcSheetName = "Sheet1"
|
m.lcSheetName = "Sheet1"
|
||||||
STORE "" TO m.lcExcelFieldList, m.lcTableFieldList
|
STORE "" TO m.lcExcelFieldList, m.lcTableFieldList
|
||||||
|
*!* coloanele se exporta in ordinea de afisare din grid (ColumnOrder), nu in ordinea de creare
|
||||||
|
DIMENSION laOrder[MAX(THIS.gridobject.COLUMNCOUNT, 1), 2]
|
||||||
FOR m.lnCounter = 1 TO THIS.gridobject.COLUMNCOUNT
|
FOR m.lnCounter = 1 TO THIS.gridobject.COLUMNCOUNT
|
||||||
m.loColumn = THIS.gridobject.COLUMNS(m.lnCounter)
|
laOrder[m.lnCounter, 1] = THIS.gridobject.COLUMNS(m.lnCounter).COLUMNORDER
|
||||||
|
laOrder[m.lnCounter, 2] = m.lnCounter
|
||||||
|
ENDFOR
|
||||||
|
=ASORT(laOrder)
|
||||||
|
FOR m.lnOrder = 1 TO THIS.gridobject.COLUMNCOUNT
|
||||||
|
m.loColumn = THIS.gridobject.COLUMNS(laOrder[m.lnOrder, 2])
|
||||||
IF m.loColumn.VISIBLE AND m.loColumn.WIDTH > 0
|
IF m.loColumn.VISIBLE AND m.loColumn.WIDTH > 0
|
||||||
m.loHeaderObject = m.loColumn.CONTROLS(1)
|
m.loHeaderObject = m.loColumn.CONTROLS(1)
|
||||||
m.lcExcelFieldList = m.lcExcelFieldList + IIF(!EMPTY(m.lcExcelFieldList), ',', '') ;
|
m.lcExcelFieldList = m.lcExcelFieldList + IIF(!EMPTY(m.lcExcelFieldList), ',', '') ;
|
||||||
|
|||||||
Reference in New Issue
Block a user