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
|
||||
*!* LPARAMETERS tcXLSFile, tcSheet, tvWorkArea, tcExcelFieldList, tcTableFieldList, tcTableForExpr
|
||||
#DEFINE ALPHANUMERICCHR "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz1234567890"
|
||||
LOCAL lnCounter, loColumn, lcXLSFile, lcSheetName, lcAliasWas, lcGridAlias, ;
|
||||
LOCAL lnCounter, lnOrder, laOrder, loColumn, lcXLSFile, lcSheetName, lcAliasWas, lcGridAlias, ;
|
||||
lcExcelFieldList, lcTableFieldList, lcTableForExpression, loHeaderObject, ;
|
||||
lcFileName, lcAction, lcPath, loExcelApp, loWorkBook, lcKeyName
|
||||
m.lcXLSFile = "C:\" + SYS(2015) + ".xls"
|
||||
@@ -2445,8 +2445,15 @@ DEFINE CLASS gridutils AS form
|
||||
*!* m.lcTableForExpression = FILTER(this.gridobject.recordsource)
|
||||
m.lcSheetName = "Sheet1"
|
||||
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
|
||||
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
|
||||
m.loHeaderObject = m.loColumn.CONTROLS(1)
|
||||
m.lcExcelFieldList = m.lcExcelFieldList + IIF(!EMPTY(m.lcExcelFieldList), ',', '') ;
|
||||
|
||||
Reference in New Issue
Block a user