3198 lines
108 KiB
Plaintext
3198 lines
108 KiB
Plaintext
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
||
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
*< FOXBIN2PRG: Version="1.21" SourceFile="exportxlsx.vcx" CPID="1250" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
||
*
|
||
*
|
||
DEFINE CLASS exportxlsx AS commandbutton
|
||
*< CLASSDATA: Baseclass="commandbutton" Timestamp="" Scale="Pixels" Uniqueid="" />
|
||
|
||
*<DefinedPropArrayMethod>
|
||
*m: cleanup
|
||
*m: cleanup2
|
||
*m: copytoxlsx
|
||
*m: gen_app
|
||
*m: gen_content_types
|
||
*m: gen_core
|
||
*m: gen_dirs
|
||
*m: gen_rels
|
||
*m: gen_styles
|
||
*m: gen_workbook
|
||
*m: gen_workbook2
|
||
*m: gen_workbook3 && For comments
|
||
*m: getcurr
|
||
*m: htmspec
|
||
*m: langset
|
||
*m: testprop
|
||
*m: thefirsttime
|
||
*p: autocolw
|
||
*p: cfields
|
||
*p: cfieldstotal
|
||
*p: cheaders
|
||
*p: grid
|
||
*p: headbackcolor
|
||
*p: headfill
|
||
*p: headfontbold
|
||
*p: headfontitalic
|
||
*p: headfontname
|
||
*p: headfontsize
|
||
*p: headforecolor
|
||
*p: label
|
||
*p: langid
|
||
*p: lastcol
|
||
*p: lastrow
|
||
*p: lerror
|
||
*p: lfirst
|
||
*p: lhead
|
||
*p: lmemoascomment && When .T. memo fields are converted into comments while the cell contains the word "Memo"
|
||
*p: lopen
|
||
*p: ncodepage
|
||
*p: nmaxindexlen
|
||
*p: rowbackcolor
|
||
*p: rowfill
|
||
*p: rowfontbold
|
||
*p: rowfontitalic
|
||
*p: rowfontname
|
||
*p: rowfontsize
|
||
*p: rowforecolor
|
||
*p: sheetfirstcol
|
||
*p: sheetfirstrow
|
||
*p: sheetname
|
||
*a: aerrmess[7,0]
|
||
*a: astyles[6,0]
|
||
*</DefinedPropArrayMethod>
|
||
|
||
PROTECTED lerror
|
||
*<PropValue>
|
||
autocolw = .F.
|
||
Caption = ""
|
||
cfields = ("")
|
||
cfieldstotal = ("")
|
||
cheaders = ("")
|
||
grid = ("")
|
||
headbackcolor = -1
|
||
headfill = .F.
|
||
headfontbold = .T.
|
||
headfontitalic = .F.
|
||
headfontname = ("")
|
||
headfontsize = 0
|
||
headforecolor = -1
|
||
Height = 15
|
||
label = ('')
|
||
langid = EN
|
||
lastcol = XFD
|
||
lastrow = (1048576)
|
||
lerror = .F.
|
||
lfirst = .T.
|
||
lhead = .T.
|
||
lmemoascomment = .F.
|
||
lopen = .T.
|
||
Name = "exportxlsx"
|
||
ncodepage = 0
|
||
nmaxindexlen = 60
|
||
rowbackcolor = -1
|
||
rowfill = .F.
|
||
rowfontbold = .F.
|
||
rowfontitalic = .F.
|
||
rowfontname = ('')
|
||
rowfontsize = 0
|
||
rowforecolor = -1
|
||
sheetfirstcol = A
|
||
sheetfirstrow = 0
|
||
sheetname = sheet1
|
||
ToolTipText = "Export xlsx (Excel 2007+)"
|
||
Width = 15
|
||
*</PropValue>
|
||
|
||
PROCEDURE cleanup
|
||
**********************
|
||
* For OS below Win 7 *
|
||
**********************
|
||
LPARAMETERS lcDir,llMemoAsComment,llToClose,cCur,cTotal,cMax,cStrings,lcCurrAlias,lnFHSh,lnFHStr,lnFHCo,lnFHDr,lcOldPath
|
||
LOCAL lSetSafety
|
||
lSetSafety = SET("Safety")
|
||
SET SAFETY OFF
|
||
This.cleanup2(m.llToClose,m.cCur,m.cTotal,m.cMax,m.cStrings,m.lcCurrAlias,m.lnFHSh,m.lnFHStr,m.lnFHCo,m.lnFHDr,m.lcOldPath)
|
||
ERASE (ADDBS(ADDBS(m.lcDir+[xl])+[_rels]) + "*.*")
|
||
RD (ADDBS(ADDBS(m.lcDir+[xl])+[_rels]))
|
||
IF m.llMemoAsComment
|
||
ERASE (ADDBS(ADDBS(m.lcDir+[xl])+[drawings]) + "*.*")
|
||
RD (ADDBS(ADDBS(m.lcDir+[xl])+[drawings]))
|
||
ERASE (ADDBS(ADDBS(ADDBS(m.lcDir+[xl])+[worksheets])+[_rels]) + "*.*")
|
||
RD (ADDBS(ADDBS(ADDBS(m.lcDir+[xl])+[worksheets])+[_rels]))
|
||
ENDIF
|
||
ERASE (ADDBS(ADDBS(m.lcDir+[xl])+[worksheets]) + "*.*")
|
||
RD (ADDBS(ADDBS(m.lcDir+[xl])+[worksheets]))
|
||
ERASE (ADDBS(m.lcDir+[xl]) + "*.*")
|
||
RD (ADDBS(m.lcDir+[xl]))
|
||
ERASE (ADDBS(m.lcDir+[docProps]) + "*.*")
|
||
RD (ADDBS(m.lcDir+[docProps]))
|
||
ERASE (ADDBS(m.lcDir+[_rels]) + "*.*")
|
||
RD (ADDBS(m.lcDir+[_rels]))
|
||
ERASE (m.lcDir + "*.*")
|
||
RD (m.lcDir)
|
||
SET SAFETY &lSetSafety
|
||
ENDPROC
|
||
|
||
PROCEDURE cleanup2
|
||
LPARAMETERS llToClose,cCur,cTotal,cMax,cStrings,lcCurrAlias,lnFHSh,lnFHStr,lnFHCo,lnFHDr,lcOldPath
|
||
IF m.llToClose
|
||
USE IN (m.cCur)
|
||
ENDIF
|
||
IF USED(m.cTotal)
|
||
USE IN (m.cTotal)
|
||
ENDIF
|
||
IF USED(m.cMax)
|
||
USE IN (m.cMax)
|
||
ENDIF
|
||
IF USED(m.cStrings)
|
||
USE IN (m.cStrings)
|
||
ENDIF
|
||
IF !EMPTY(m.lcCurrAlias)
|
||
SELECT (m.lcCurrAlias)
|
||
ENDIF
|
||
IF VARTYPE(m.lnFHSh) == "N"
|
||
FCLOSE(m.lnFHSh)
|
||
ENDIF
|
||
IF VARTYPE(m.lnFHStr) == "N"
|
||
FCLOSE(m.lnFHStr)
|
||
ENDIF
|
||
IF VARTYPE(m.lnFHCo) == "N"
|
||
FCLOSE(m.lnFHCo)
|
||
ENDIF
|
||
IF VARTYPE(m.lnFHDr) == "N"
|
||
FCLOSE(m.lnFHDr)
|
||
ENDIF
|
||
IF !EMPTY(m.lcOldPath)
|
||
SET DEFAULT TO (m.lcOldPath)
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Click
|
||
LOCAL lcFile,cCursor,llDo
|
||
llDo = .F.
|
||
|
||
* Courtesy of Tobias B
|
||
LOCAL lc_FileName
|
||
DO CASE
|
||
CASE TYPE("THIS.Label") == "C"
|
||
m.lc_FileName = THIS.Label + "_"
|
||
CASE TYPE("THIS.Label.Caption") == "C"
|
||
m.lc_FileName = THIS.Label.Caption + "_"
|
||
OTHERWISE
|
||
m.lc_FileName = ""
|
||
ENDCASE
|
||
lc_FileName = m.lc_FileName + TTOC(DATETIME(),1) + ".xlsx"
|
||
|
||
IF VARTYPE(This.grid)="O" AND !ISNULL(This.grid)
|
||
IF LOWER(This.grid.baseclass)!="grid"
|
||
RETURN
|
||
ENDIF
|
||
lcFile=PUTFILE("File name",m.lc_FileName,"XLSX")
|
||
cCursor=This.grid.RecordSource
|
||
llDo = !EMPTY(m.lcFile) AND USED(m.cCursor)
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.grid)="C" AND !EMPTY(This.grid)
|
||
lcFile=PUTFILE("File name",m.lc_FileName,"XLSX")
|
||
cCursor=This.grid
|
||
llDo = !EMPTY(m.lcFile) AND USED(m.cCursor)
|
||
ENDIF
|
||
|
||
IF m.llDo
|
||
This.TestProp
|
||
This.Thefirsttime
|
||
This.langSet
|
||
This.copytoxlsx(m.cCursor,m.lcFile)
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE copytoxlsx
|
||
LPARAMETERS cCur,lcFileName
|
||
# DEFINE MAXIMUMCOMMENTHEIGHT 20 && maximum height of a comment (expressed in sheet rows)
|
||
# DEFINE MAXIMUMCOMMENTWIDTH 10 && maximum width of a comment (expressed in sheet columns)
|
||
DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER nWinHandle,STRING cOperation,STRING cFileName,STRING cParameters,STRING cDirectory,INTEGER nShowWindow
|
||
IF OS(3) < '6' && XP
|
||
Declare INTEGER GetLocaleInfo in Win32API LONG Locale, LONG LCType, STRING @LpLCData, INTEGER cchData
|
||
ELSE
|
||
Declare INTEGER GetLocaleInfoEx in Win32API String Locale, LONG LCType, STRING @LpLCData, INTEGER cchData
|
||
ENDIF
|
||
DECLARE Sleep IN kernel32 INTEGER
|
||
|
||
LOCAL lcMyPath,lcDir,loerr as Exception
|
||
LOCAL lnRowsNo,lnColsNo,laFields[1,6],lnCurRow,lnCurCol,lnTime,ltTime,lcSetDec,lnColsNoAll,laFieldsAll[1],lnLenStr,lnLenIdx,llMemos,lnII,lSetTalk,lnFFields,laFFields[1]
|
||
LOCAL cStrings,lnColChars,llCR,lcValue,lnDec,cMax,ldValue
|
||
LOCAL lcCurr,lcFFields
|
||
LOCAL ldDat01,ldDat11,ldDat02,ldDat12,ldDat03,ltDat02
|
||
LOCAL lnFHStr,lnFHSh,lcLenStr,lcLenIdx,lnCountbefore,lcUnion,lcField,lnTotal,cTotal,lcCurRow,ofile,lcSource,lcZipFileName,oShell,oFolder
|
||
LOCAL lcStH,lcStN,lcStD,lcStT,lcStM,lcStC,llBelow7
|
||
LOCAL lnHead,laHead[1],llHead,lnsheetfirstcol,lni,lcRowHeight,lcFontName,lnFontSize,lnColWidth,lnNoRows,lcProcName,lcProcCode
|
||
LOCAL laFields[1,7],lnType,lala[1],lcSetPoint,llMemoAsComment,lnFHCo,lnFHDr,lnCurComm,lnNoRow,laNoRow[1],lniNoRow,lnMaxLenRow,lnCommW,lnCommH
|
||
|
||
LOCAL lcCurrAlias,llToClose,lcOldPath,lnCodePage,lcCodePage,lcStrBad,lcTmp,lnj
|
||
lcStrBad = ''
|
||
FOR lni = 0 TO 31
|
||
IF !INLIST(m.lni,9,10,13)
|
||
lcStrBad = m.lcStrBad + CHR(m.lni)
|
||
ENDIF
|
||
NEXT
|
||
lcCurrAlias = ALIAS()
|
||
llToClose = .F.
|
||
|
||
llMemoAsComment = This.lMemoAsComment
|
||
IF PCOUNT() < 1
|
||
MESSAGEBOX(This.aErrMess[4],48,This.aErrMess[3])
|
||
RETURN
|
||
ELSE
|
||
IF VARTYPE(m.cCur) $ "CV"
|
||
IF !USED(m.cCur)
|
||
USE (m.cCur) IN 0
|
||
llToClose = .T.
|
||
ENDIF
|
||
ELSE
|
||
MESSAGEBOX(This.aErrMess[5],48,This.aErrMess[3])
|
||
RETURN
|
||
ENDIF
|
||
ENDIF
|
||
IF PCOUNT() < 2
|
||
lcFileName = FORCEEXT(SYS(2015),"xlsx")
|
||
ELSE
|
||
IF VARTYPE(m.lcFileName) $ "CV"
|
||
lcFileName = FORCEEXT(m.lcFileName,"xlsx")
|
||
ELSE
|
||
lcFileName = FORCEEXT(SYS(2015),"xlsx")
|
||
ENDIF
|
||
ENDIF
|
||
* Thanks to Gregory Green
|
||
IF VARTYPE(This.nCodePage) <> "N"
|
||
lcCodePage = ''
|
||
ELSE
|
||
IF !INLIST(This.nCodePage,437,620,737,850,852,857,861,865,866,874,895,932,936,949,950,1250,1251,1252,1253,1254,1255,1256)
|
||
lcCodePage = ''
|
||
ELSE
|
||
lcCodePage = 'CODEPAGE = ' + TRANSFORM(This.nCodePage)
|
||
ENDIF
|
||
ENDIF
|
||
********
|
||
llHead = This.lHead
|
||
lcFFields = This.cFields
|
||
IF m.llHead AND !EMPTY(This.cHeaders)
|
||
lnHead = ALINES(laHead,This.cHeaders,4,",")
|
||
ELSE
|
||
lnHead = 0
|
||
ENDIF
|
||
|
||
IF FILE(FORCEEXT(m.lcFileName,"xlsx"))
|
||
IF MESSAGEBOX(FORCEEXT(m.lcFileName,"xlsx")+" "+This.aErrMess[6]+CHR(13)+This.aErrMess[7],4+48,This.aErrMess[3]) = 7
|
||
RETURN
|
||
ELSE
|
||
ERASE (FORCEEXT(m.lcFileName,"xlsx")) RECYCLE
|
||
ENDIF
|
||
ENDIF
|
||
lnFFields = 0
|
||
IF VARTYPE(m.lcFFields) <> "C"
|
||
lcFFields = ""
|
||
ELSE
|
||
lnFFields = ALINES(laFFields,UPPER(m.lcFFields),1+4,",")
|
||
ENDIF
|
||
|
||
lSetTalk = SET("Talk")
|
||
SET TALK OFF
|
||
lcSetPoint = SET("Point")
|
||
SET POINT TO "."
|
||
lnColsNoAll=AFIELDS(m.laFieldsAll,m.cCur)
|
||
lnColsNo = 0
|
||
lnLenStr = 19 && for datetime
|
||
llMemos = .F.
|
||
lcUnion = ""
|
||
cTotal = SYS(2015)
|
||
lnTotal = 0
|
||
ldDat01 = DATE(1900,3,1)
|
||
ldDat02 = DATE(1900,1,1)
|
||
ldDat03 = DATE(1900,2,28)
|
||
ldDat11 = m.ldDat01 - 61
|
||
ldDat12 = m.ldDat02 - 1
|
||
ltDat02 = DATETIME(1900,1,1,0,0,0)
|
||
lnColChars = 0
|
||
|
||
lnsheetfirstcol = 0
|
||
FOR lni = 1 TO LEN(This.sheetfirstcol)
|
||
lnsheetfirstcol = m.lnsheetfirstcol * 26 + ASC(SUBSTR(This.sheetfirstcol,m.lni,1)) - 64
|
||
NEXT
|
||
|
||
LOCAL lnActualCol,lnActualField,lnActualField2
|
||
lnActualCol = 0
|
||
FOR lnCurCol = 1 TO m.lnColsNoAll
|
||
lnActualCol = m.lnActualCol + 1
|
||
IF m.laFieldsAll[m.lnCurCol,2] $ "G"
|
||
lnActualCol = m.lnActualCol - 1
|
||
FOR lnActualField = 1 TO m.lnFFields
|
||
IF m.laFieldsAll[m.lnCurCol,1] == laFFields[m.lnActualField]
|
||
FOR lnActualField2 = m.lnActualField TO m.lnFFields - 1
|
||
laFFields[m.lnActualField2] = m.laFFields[m.lnActualField2 + 1]
|
||
NEXT
|
||
lnFFields = m.lnFFields - 1
|
||
EXIT
|
||
ENDIF
|
||
NEXT
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] $ "NFYBIDTLCVM"
|
||
IF !EMPTY(m.lcFFields)
|
||
IF ASCAN(m.laFFields,laFieldsAll[m.lnCurCol,1],1,-1,-1,1+2+4)=0
|
||
LOOP
|
||
ENDIF
|
||
ENDIF
|
||
lnColsNo = m.lnColsNo + 1
|
||
DIMENSION laFields[m.lnColsNo,7]
|
||
laFields[m.lnColsNo,1] = laFieldsAll[m.lnCurCol,1]
|
||
laFields[m.lnColsNo,2] = IIF(laFieldsAll[m.lnCurCol,2] $ "CV",1,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] $ "NF",2,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] == "I",3,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] == "D",4,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] == "T",5,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] == "L",6,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] == "Y",7,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] == "B",8,;
|
||
IIF(laFieldsAll[m.lnCurCol,2] == "M",9,10)))))))))
|
||
laFields[m.lnColsNo,3] = laFieldsAll[m.lnCurCol,3]
|
||
laFields[m.lnColsNo,4] = laFieldsAll[m.lnCurCol,4]
|
||
laFields[m.lnColsNo,5] = IIF(m.lnColsNo + m.lnsheetfirstcol - 1 <=26,[],;
|
||
IIF(m.lnColsNo + m.lnsheetfirstcol - 1 <=702,CHR(64 + FLOOR((m.lnColsNo + m.lnsheetfirstcol - 2) / 26)),;
|
||
CHR(64 + FLOOR((m.lnColsNo + m.lnsheetfirstcol - 2 - 26) / 676))+CHR(65 + FLOOR(MOD(m.lnColsNo + m.lnsheetfirstcol - 2 - 26,676) / 26))))+;
|
||
CHR(65 + MOD(m.lnColsNo + m.lnsheetfirstcol - 2,26))
|
||
laFields[m.lnColsNo,6] = laFieldsAll[m.lnCurCol,3]
|
||
laFields[m.lnColsNo,7] = m.lnActualCol &&lnCurCol
|
||
IF LEN(laFields[m.lnColsNo,5]) = 3 AND laFields[m.lnColsNo,5] = This.LastCol
|
||
EXIT
|
||
ENDIF
|
||
ELSE
|
||
LOOP
|
||
ENDIF
|
||
lcField = laFieldsAll[m.lnCurCol,1]
|
||
IF m.laFieldsAll[m.lnCurCol,2] $ "CV"
|
||
lnLenStr = MAX(m.lnLenStr, laFieldsAll[m.lnCurCol,3])
|
||
IF !EMPTY(m.lcUnion)
|
||
lcUnion = m.lcUnion + " UNION"
|
||
ENDIF
|
||
lcUnion = m.lcUnion + " SELECT DISTINCT CAST(RTRIM(" + m.lcField + ") AS V("+TRANSFORM(m.laFieldsAll[m.lnCurCol,3])+")) FROM " + m.cCur + " WHERE !ISNULL(" + m.lcField + ")"
|
||
SELECT COUNT(*) as no FROM (m.cCur) WHERE ISNULL(&lcField) INTO CURSOR (m.cTotal)
|
||
lnTotal = m.lnTotal + RECCOUNT(m.cCur) - &cTotal..no
|
||
IF This.autocolw
|
||
SELECT CAST(MAX(LEN(RTRIM(&lcField))) as I) as maxw FROM (m.cCur) WHERE !ISNULL(&lcField) INTO CURSOR (m.cTotal)
|
||
laFields[m.lnColsNo,6] = &cTotal..maxw
|
||
ENDIF
|
||
ENDIF
|
||
IF This.autocolw
|
||
IF m.laFieldsAll[m.lnCurCol,2] $ "NF"
|
||
SELECT MAX(ABS(&lcField)) as maxw FROM (m.cCur) WHERE !ISNULL(&lcField) INTO CURSOR (m.cTotal)
|
||
laFields[m.lnColsNo,6] = LEN(ALLTRIM(STR(&cTotal..maxw,laFieldsAll[m.lnCurCol,3],laFieldsAll[m.lnCurCol,4])))+1
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] == "L"
|
||
laFields[m.lnColsNo,6] = 5
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] == "I"
|
||
SELECT MAX(ABS(&lcField)) as maxw FROM (m.cCur) WHERE !ISNULL(&lcField) INTO CURSOR (m.cTotal)
|
||
laFields[m.lnColsNo,6] = LEN(ALLTRIM(STR(&cTotal..maxw,12)))+1
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] == "Y"
|
||
SELECT MAX(ABS(&lcField)) as maxw FROM (m.cCur) WHERE !ISNULL(&lcField) INTO CURSOR (m.cTotal)
|
||
laFields[m.lnColsNo,6] = LEN(ALLTRIM(STR(&cTotal..maxw,22,4)))+1
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] == "B"
|
||
SELECT MAX(ABS(&lcField)) as maxw FROM (m.cCur) WHERE !ISNULL(&lcField) INTO CURSOR (m.cTotal)
|
||
laFields[m.lnColsNo,6] = LEN(ALLTRIM(STR(&cTotal..maxw,22,laFieldsAll[m.lnCurCol,4])))+1
|
||
ENDIF
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] == "D"
|
||
IF !EMPTY(m.lcUnion)
|
||
lcUnion = m.lcUnion + " UNION"
|
||
ENDIF
|
||
lcUnion = m.lcUnion + " SELECT DISTINCT DTOC(" + m.lcField + ") FROM " + m.cCur + " WHERE " + m.lcField + " < m.ldDat02 "
|
||
SELECT COUNT(*) as no FROM (m.cCur) WHERE &lcField < m.ldDat02 INTO CURSOR (m.cTotal)
|
||
lnTotal = m.lnTotal + &cTotal..no
|
||
laFields[m.lnColsNo,6] = 10
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] == "T"
|
||
IF !EMPTY(m.lcUnion)
|
||
lcUnion = m.lcUnion + " UNION"
|
||
ENDIF
|
||
lcUnion = m.lcUnion + " SELECT DISTINCT TTOC(" + m.lcField + ") FROM " + m.cCur + " WHERE " + m.lcField + " < m.ltDat02 "
|
||
SELECT COUNT(*) as no FROM (m.cCur) WHERE &lcField < m.ltDat02 INTO CURSOR (m.cTotal)
|
||
lnTotal = m.lnTotal + &cTotal..no
|
||
laFields[m.lnColsNo,6] = 19
|
||
ENDIF
|
||
IF m.laFieldsAll[m.lnCurCol,2] == "M"
|
||
lnColChars = m.lnColChars +1
|
||
llMemos = .T.
|
||
IF This.autocolw
|
||
IF m.llMemoAsComment
|
||
laFields[m.lnColsNo,6] = 5
|
||
ELSE
|
||
lcProcName = SYS(2015)
|
||
TEXT TO m.lcProcCode TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
|
||
SELECT MAX(<<m.lcProcName>>(<<m.lcField>>)) as maxw FROM <<m.cCur>> WHERE !ISNULL(<<m.lcField>>) INTO CURSOR <<m.cTotal>>
|
||
RETURN <<m.cTotal>>.maxw
|
||
FUNCTION <<m.lcProcName>>
|
||
LPARAMETERS tcValue
|
||
LOCAL lnRow,laRow[1],lnMax,lni
|
||
IF EMPTY(m.tcValue)
|
||
RETURN 0
|
||
ELSE
|
||
lnRow = ALINES(laRow,m.tcValue,2)
|
||
lnMax = LEN(m.laRow[1])
|
||
FOR lni = 2 TO m.lnRow
|
||
lnMax = MAX(m.lnMax,LEN(m.laRow[m.lni]))
|
||
NEXT
|
||
RETURN m.lnMax
|
||
ENDIF
|
||
ENDFUNC
|
||
ENDTEXT
|
||
laFields[m.lnColsNo,6] = EXECSCRIPT(m.lcProcCode)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
NEXT
|
||
lnLenIdx = MIN(This.nMaxIndexLen, m.lnLenStr)
|
||
lnTotal = m.lnTotal + m.lnColsNo
|
||
|
||
SELECT (m.cCur)
|
||
COUNT TO m.lnRowsNo
|
||
lnTotal = m.lnTotal + m.lnRowsNo * m.lnColChars
|
||
lnRowsNo=m.lnRowsNo+IIF(m.llHead,1,0)
|
||
|
||
FOR lni = 1 TO m.lnFFields
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
IF m.laFields[m.lnCurCol,1] == m.laFFields[m.lni]
|
||
FOR lnj = 1 TO ALEN(laFields,2)
|
||
lcTmp = m.laFields[m.lnCurCol,m.lnj]
|
||
laFields[m.lnCurCol,m.lnj] = m.laFields[m.lni,m.lnj]
|
||
laFields[m.lni,m.lnj] = m.lcTmp
|
||
NEXT
|
||
EXIT
|
||
ENDIF
|
||
NEXT
|
||
NEXT
|
||
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
laFields[m.lnCurCol,5] = IIF(m.lnCurCol + m.lnsheetfirstcol - 1 <=26,[],;
|
||
IIF(m.lnCurCol + m.lnsheetfirstcol - 1 <=702,CHR(64 + FLOOR((m.lnCurCol + m.lnsheetfirstcol - 2) / 26)),;
|
||
CHR(64 + FLOOR((m.lnCurCol + m.lnsheetfirstcol - 2 - 26) / 676))+CHR(65 + FLOOR(MOD(m.lnCurCol + m.lnsheetfirstcol - 2 - 26,676) / 26))))+;
|
||
CHR(65 + MOD(m.lnCurCol + m.lnsheetfirstcol - 2,26))
|
||
NEXT
|
||
|
||
cStrings = SYS(2015)
|
||
cMax = SYS(2015)
|
||
CREATE CURSOR (m.cStrings) &lcCodePage (ii I AUTOINC NEXTVALUE 0,cStr V(m.lnLenStr),cM M)
|
||
IF m.llMemoAsComment and m.llMemos
|
||
INSERT INTO (m.cStrings) (cStr) VALUES ("Memo")
|
||
ENDIF
|
||
|
||
|
||
IF !EMPTY(m.lcUnion)
|
||
EXECSCRIPT("LPARAMETERS ldDat02,ltDat02"+CHR(13)+"INSERT INTO " + m.cStrings + " (cStr)" + m.lcUnion,m.ldDat02,m.ltDat02)
|
||
ENDIF
|
||
|
||
IF m.lnLenStr > 0
|
||
IF m.lnLenIdx >= m.lnLenStr
|
||
INDEX on cStr TAG cStr
|
||
ELSE
|
||
lcLenIdx = LTRIM(STR(m.lnLenIdx))
|
||
INDEX on LEFT(cStr,&lcLenIdx) TAG cStr
|
||
ENDIF
|
||
ENDIF
|
||
IF m.llMemos
|
||
lcLenStr = LTRIM(STR(m.lnLenIdx)) && courtesy of Tobias B
|
||
INDEX on LEFT(cM,&lcLenStr) TAG cM
|
||
ENDIF
|
||
SET ORDER TO cStr
|
||
|
||
lcCurr = This.Getcurr(m.lcStrBad) && courtesy of Martina Jindrov<6F>
|
||
|
||
lcOldPath = SYS(5)+SYS(2003)
|
||
lcMyPath=''
|
||
IF !EMPTY(JUSTPATH(m.lcFileName))
|
||
lcMyPath=ADDBS(JUSTPATH(m.lcFileName))
|
||
SET DEFAULT TO (m.lcMyPath)
|
||
ELSE
|
||
lcMyPath = ADDBS(JUSTPATH(FULLPATH(m.lcFileName)))
|
||
ENDIF
|
||
|
||
lcDir=This.gen_dirs(m.llMemoAsComment and m.llMemos)
|
||
This.gen_Content_Types(m.lcDir,m.llMemoAsComment and m.llMemos)
|
||
IF This.lError
|
||
RETURN
|
||
ENDIF
|
||
This.gen_rels(ADDBS(m.lcDir+[_rels]))
|
||
IF This.lError
|
||
RETURN
|
||
ENDIF
|
||
This.gen_app(ADDBS(m.lcDir+[docProps]))
|
||
IF This.lError
|
||
RETURN
|
||
ENDIF
|
||
This.gen_core(ADDBS(m.lcDir+[docProps]))
|
||
IF This.lError
|
||
RETURN
|
||
ENDIF
|
||
This.gen_workbook(ADDBS(ADDBS(m.lcDir+[xl])+[_rels]),m.llMemoAsComment and m.llMemos)
|
||
IF This.lError
|
||
RETURN
|
||
ENDIF
|
||
This.gen_styles(ADDBS(m.lcDir+[xl]),m.lcCurr,m.llMemoAsComment and m.llMemos)
|
||
IF This.lError
|
||
RETURN
|
||
ENDIF
|
||
This.gen_workbook2(ADDBS(m.lcDir+[xl]))
|
||
IF This.lError
|
||
RETURN
|
||
ENDIF
|
||
IF m.llMemoAsComment and m.llMemos
|
||
This.gen_workbook3(ADDBS(ADDBS(ADDBS(m.lcDir+[xl])+[worksheets])+[_rels]))
|
||
ENDIF
|
||
lcStH = [ s="]+LTRIM(STR(This.aStyles[6]))+["]
|
||
lcStN = [ s="]+LTRIM(STR(This.aStyles[1]))+["]
|
||
lcStD = [ s="]+LTRIM(STR(This.aStyles[2]))+["]
|
||
lcStT = [ s="]+LTRIM(STR(This.aStyles[3]))+["]
|
||
lcStM = [ s="]+LTRIM(STR(This.aStyles[4]))+["]
|
||
lcStC = [ s="]+LTRIM(STR(This.aStyles[5]))+["]
|
||
|
||
* Begin sheet1
|
||
lnFHSh = FCREATE(ADDBS(ADDBS(m.lcDir+[xl])+[worksheets]) + [sheet1.xml])
|
||
IF m.lnFHSh < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' sheet1.xml',16,This.aErrMess[1])
|
||
This.cleanup(m.lcDir,m.llMemoAsComment AND m.llMemos,m.llToClose,m.cCur,m.cTotal,m.cMax,m.cStrings,m.lcCurrAlias,m.lnFHSh,m.lnFHStr,m.lnFHCo,m.lnFHDr,m.lcOldPath)
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnFHSh,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnFHSh,[<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" ])
|
||
IF m.llMemoAsComment AND m.llMemos
|
||
FWRITE(m.lnFHSh,[xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" ])
|
||
ENDIF
|
||
FWRITE(m.lnFHSh,[xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"> ])
|
||
FWRITE(m.lnFHSh,[<dimension ref="] + This.sheetfirstcol + TRANSFORM(This.sheetfirstrow) + ;
|
||
[:] + IIF(m.lnColsNo + m.lnsheetfirstcol - 1>702,CHR(64 + FLOOR((m.lnColsNo + m.lnsheetfirstcol - 2 - 26) / 676))+CHR(65 + FLOOR(MOD(m.lnColsNo + m.lnsheetfirstcol - 2 - 26,676) / 26)),;
|
||
IIF(m.lnColsNo + m.lnsheetfirstcol - 1>26,CHR(64+FLOOR((m.lnColsNo + m.lnsheetfirstcol - 2)/26)),[]))+;
|
||
CHR(65+MOD(m.lnColsNo + m.lnsheetfirstcol - 2,26)) + TRANSFORM(MIN(m.lnRowsNo + This.sheetfirstrow - 1,This.LastRow))+["/>])
|
||
FWRITE(m.lnFHSh,[<sheetViews><sheetView workbookViewId="0"/></sheetViews>])
|
||
FWRITE(m.lnFHSh,[<sheetFormatPr defaultRowHeight="15"/>])
|
||
|
||
IF This.autocolw
|
||
FWRITE(m.lnFHSh,[<cols>])
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
lcFontName = _screen.FontName
|
||
lnFontSize = _screen.FontSize
|
||
_screen.FontName = IIF(!EMPTY(This.rowFontName), This.rowFontName, "Calibri")
|
||
_screen.FontSize = IIF(This.RowFontSize>0, This.RowFontSize, 11)
|
||
lnColWidth = _screen.TextWidth(REPLICATE("A",m.laFields[m.lnCurCol,6])) / 75 * 10 + 0.7
|
||
_screen.FontName = m.lcFontName
|
||
_screen.FontSize = m.lnFontSize
|
||
FWRITE(m.lnFHSh,[<col customWidth="1" width="] + TRANSFORM(ROUND(m.lnColWidth,1)) + [" max="] + LTRIM(STR(m.lnCurCol)) + [" min="] + LTRIM(STR(m.lnCurCol)) + ["/>])
|
||
NEXT
|
||
FWRITE(m.lnFHSh,[</cols>])
|
||
ENDIF
|
||
|
||
FWRITE(m.lnFHSh,[<sheetData>])
|
||
|
||
IF m.llMemoAsComment AND m.llMemos
|
||
* Begin comments1
|
||
lnFHCo = FCREATE(ADDBS(m.lcDir+[xl])+"comments1.xml")
|
||
IF m.lnFHCo < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' comments1.xml',16,This.aErrMess[1])
|
||
This.cleanup(m.lcDir,m.llMemoAsComment AND m.llMemos,m.llToClose,m.cCur,m.cTotal,m.cMax,m.cStrings,m.lcCurrAlias,m.lnFHSh,m.lnFHStr,m.lnFHCo,m.lnFHDr,m.lcOldPath)
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnFHCo,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnFHCo,[<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">])
|
||
FWRITE(m.lnFHCo,[<authors>])
|
||
FWRITE(m.lnFHCo,[<author>CopyToXlsx</author>])
|
||
FWRITE(m.lnFHCo,[</authors>])
|
||
FWRITE(m.lnFHCo,[<commentList>])
|
||
* Begin vmlDrawing1.vml
|
||
lnFHDr = FCREATE(ADDBS(ADDBS(m.lcDir+[xl])+[drawings])+"vmlDrawing1.vml")
|
||
IF m.lnFHDr < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' vmlDrawing1.vml',16,This.aErrMess[1])
|
||
This.cleanup(m.lcDir,m.llMemoAsComment AND m.llMemos,m.llToClose,m.cCur,m.cTotal,m.cMax,m.cStrings,m.lcCurrAlias,m.lnFHSh,m.lnFHStr,m.lnFHCo,m.lnFHDr,m.lcOldPath)
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnFHDr,[<?xml version="1.0"?>]+CHR(10))
|
||
FWRITE(m.lnFHDr,[<xml xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">])
|
||
FWRITE(m.lnFHDr,[<o:shapelayout v:ext="edit">])
|
||
FWRITE(m.lnFHDr,[<o:idmap v:ext="edit" data="1"/>])
|
||
FWRITE(m.lnFHDr,[</o:shapelayout>])
|
||
FWRITE(m.lnFHDr,[<v:shapetype path="m,l,21600r21600,l21600,xe" o:spt="202" coordsize="21600,21600" id="_x0000_t202">])
|
||
FWRITE(m.lnFHDr,[<v:stroke joinstyle="miter"/>])
|
||
FWRITE(m.lnFHDr,[<v:path o:connecttype="rect" gradientshapeok="t"/>])
|
||
FWRITE(m.lnFHDr,[</v:shapetype>])
|
||
ENDIF
|
||
|
||
* Begin sharedStrings
|
||
lnFHStr = FCREATE(ADDBS(m.lcDir+[xl])+"sharedStrings.xml")
|
||
IF m.lnFHStr < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' sharedStrings.xml',16,This.aErrMess[1])
|
||
This.cleanup(m.lcDir,m.llMemoAsComment AND m.llMemos,m.llToClose,m.cCur,m.cTotal,m.cMax,m.cStrings,m.lcCurrAlias,m.lnFHSh,m.lnFHStr,m.lnFHCo,m.lnFHDr,m.lcOldPath)
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnFHStr,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnFHStr,[<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="]+SPACE(40))
|
||
|
||
SELECT (m.cStrings)
|
||
SET ORDER TO
|
||
SCAN NOOPTIMIZE
|
||
FWRITE(m.lnFHStr,[<si><t>]+This.htmspec(cStr,m.lcStrBad)+[</t></si>])
|
||
ENDSCAN
|
||
SET ORDER TO cStr
|
||
|
||
lnCurRow = This.sheetfirstrow - 1
|
||
IF m.llHead
|
||
lnCurRow = m.lnCurRow + 1
|
||
lcCurRow = LTRIM(STR(m.lnCurRow))
|
||
FWRITE(m.lnFHSh,[<row r="]+m.lcCurRow+["] + IIF(This.HeadFontSize>0,[ customHeight="1" ht="] + LTRIM(STR(This.HeadFontSize * 1.275,10,2)) + ["],[])+ [>]) && spans="1:1" x14ac:dyDescent="0.25"
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
FWRITE(m.lnFHSh,[<c r="]+m.laFields[m.lnCurCol,5]+m.lcCurRow)
|
||
IF m.lnHead <> 0
|
||
lcValue = m.laHead[m.lnCurCol]
|
||
ELSE
|
||
lcValue = m.laFields[m.lnCurCol,1]
|
||
ENDIF
|
||
SELECT (m.cStrings)
|
||
IF m.lnLenIdx >= m.lnLenStr
|
||
SET KEY TO m.lcValue
|
||
ELSE
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
ENDIF
|
||
lnII = 0
|
||
SCAN
|
||
IF cStr == m.lcValue
|
||
lnII = ii
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
IF m.lnII > 0
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStH +[><v>]+LTRIM(STR(m.lnII))+[</v></c>])
|
||
ELSE
|
||
FWRITE(m.lnFHStr,[<si><t>]+This.htmspec(m.lcValue,m.lcStrBad)+[</t></si>])
|
||
INSERT INTO (m.cStrings) (cStr) VALUES (m.lcValue)
|
||
SELECT MAX(ii) as ii FROM (m.cStrings) INTO CURSOR (m.cMax)
|
||
SELECT (m.cMax)
|
||
lnII = ii
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStH +[><v>]+LTRIM(STR(m.lnII))+[</v></c>])
|
||
ENDIF
|
||
NEXT
|
||
FWRITE(m.lnFHSh,[</row>]+CHR(10))
|
||
ENDIF
|
||
|
||
lcRowHeight = IIF(This.RowFontSize>0,[ customHeight="1" ht="] + LTRIM(STR(This.RowFontSize * 1.275,10,2)) + ["],[])
|
||
lcSetDec = SET("Decimals")
|
||
SET DECIMALS TO 13
|
||
IF m.llMemoAsComment AND m.llMemos
|
||
lnCurComm = 0
|
||
ENDIF
|
||
SELECT (m.cCur)
|
||
DO CASE
|
||
CASE m.llMemos AND m.lnLenIdx < m.lnLenStr
|
||
SCAN
|
||
lnCurRow = m.lnCurRow + 1
|
||
IF m.lnCurRow > This.LastRow
|
||
EXIT
|
||
ENDIF
|
||
lcCurRow = LTRIM(STR(m.lnCurRow))
|
||
SCATTER MEMO TO lala
|
||
lnNoRows = 1
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
IF m.laFields[m.lnCurCol,2] = 9
|
||
lnNoRows = MAX(m.lnNoRows , 1 + OCCURS(CHR(13),RTRIM(lala[m.laFields[m.lnCurCol,7]])))
|
||
ENDIF
|
||
NEXT
|
||
lcRowHeight = [ customHeight="1" ht="] + LTRIM(STR(IIF(This.RowFontSize>0,This.RowFontSize,11) * m.lnNoRows * 1.275,10,2)) + ["]
|
||
FWRITE(m.lnFHSh,[<row r="]+m.lcCurRow+["] + m.lcRowHeight + [>])
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
SET ORDER TO cStr IN (m.cStrings)
|
||
lcValue = lala[m.laFields[m.lnCurCol,7]]
|
||
IF ISNULL(m.lcValue)
|
||
LOOP
|
||
ENDIF
|
||
lnType = m.laFields[m.lnCurCol,2]
|
||
lnDec = m.laFields[m.lnCurCol,4]
|
||
FWRITE(m.lnFHSh,[<c r="]+m.laFields[m.lnCurCol,5]+m.lcCurRow)
|
||
IF m.lnType == 1
|
||
lcValue = RTRIM(m.lcValue)
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[></c>]) && Empty cell
|
||
ELSE
|
||
SELECT (m.cStrings)
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
SCAN
|
||
IF cStr == m.lcValue
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
ENDIF
|
||
SELECT (m.cCur)
|
||
ELSE
|
||
IF m.lnType == 2
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,m.laFields[m.lnCurCol,3],m.lnDec))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType == 3
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType == 4
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
IF m.lcValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat11))+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.lcValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat12))+[</v></c>])
|
||
ELSE
|
||
lcValue = DTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
SCAN
|
||
IF cStr == m.lcValue
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType == 5
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
ltTime = m.lcValue
|
||
ldValue = TTOD(m.lcValue)
|
||
lnTime = (m.ltTime-DATETIME(YEAR(m.ltTime),MONTH(m.ltTime),DAY(m.ltTime),0,0,0))/(86400.0)
|
||
IF m.ldValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat11))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.ldValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat12))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
lcValue = TTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
SCAN
|
||
IF cStr == m.lcValue
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType == 6
|
||
FWRITE(m.lnFHSh,[" t="b"] + m.lcStN +[><v>]+IIF(m.lcValue ,[1],[0])+[</v></c>])
|
||
ELSE
|
||
IF m.lnType == 7
|
||
FWRITE(m.lnFHSh,["] + m.lcStC +[><v>]+LTRIM(STR(m.lcValue,21,4))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType == 8
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,21,m.lnDec))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType == 9
|
||
lcValue = RTRIM(m.lcValue)
|
||
IF m.llMemoAsComment
|
||
lnCurComm = m.lnCurComm + 1
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["] + m.lcStN + [ t="s"></c>]) && Empty cell
|
||
ELSE
|
||
FWRITE(m.lnFHSh,["] + m.lcStN + [ t="s"><v>0</v></c>]) && Type "Memo" in sheet1
|
||
FWRITE(m.lnFHCo,[<comment authorId="0" ref="] + m.laFields[m.lnCurCol,5]+m.lcCurRow + [">]) && comments1
|
||
FWRITE(m.lnFHCo,[<text>])
|
||
FWRITE(m.lnFHCo,[<r>])
|
||
FWRITE(m.lnFHCo,[<rPr>])
|
||
FWRITE(m.lnFHCo,[<sz val="9"/>])
|
||
FWRITE(m.lnFHCo,[<color indexed="81"/>])
|
||
FWRITE(m.lnFHCo,[<rFont val="Tahoma"/>])
|
||
FWRITE(m.lnFHCo,[<family val="2"/>])
|
||
FWRITE(m.lnFHCo,[<charset val="238"/>])
|
||
FWRITE(m.lnFHCo,[</rPr>])
|
||
FWRITE(m.lnFHCo,[<t>] + m.lcValue + [</t>])
|
||
FWRITE(m.lnFHCo,[</r>])
|
||
FWRITE(m.lnFHCo,[</text>])
|
||
FWRITE(m.lnFHCo,[</comment>])
|
||
|
||
|
||
FWRITE(m.lnFHDr,[<v:shape id="_x] + PADL(LTRIM(STR(m.lnCurComm)),10,"0") + [" o:insetmode="auto" fillcolor="#ffffe1" style="position:absolute; margin-left:] + ;
|
||
LTRIM(STR(59.25 + 48 * (m.lnCurCol - 1))) + [pt;margin-top:] + LTRIM(STR(1.5 + 15 * (m.lnCurRow - 1))) + [pt;width:108pt;height:59.25pt;z-index:] + ;
|
||
LTRIM(STR(m.lnCurComm)) + [; visibility:hidden" type="#_x0000_t202">])
|
||
FWRITE(m.lnFHDr,[<v:fill color2="#ffffe1"/>])
|
||
FWRITE(m.lnFHDr,[<v:shadow obscured="t" color="black" on="t"/>])
|
||
FWRITE(m.lnFHDr,[<v:path o:connecttype="none"/>])
|
||
FWRITE(m.lnFHDr,[<v:textbox style="mso-direction-alt:auto">])
|
||
FWRITE(m.lnFHDr,[<div style="text-align:left"/>])
|
||
FWRITE(m.lnFHDr,[</v:textbox>])
|
||
FWRITE(m.lnFHDr,[<x:ClientData ObjectType="Note">])
|
||
FWRITE(m.lnFHDr,[<x:MoveWithCells/>])
|
||
FWRITE(m.lnFHDr,[<x:SizeWithCells/>])
|
||
|
||
|
||
lnNoRow = ALINES(laNoRow,m.lcValue)
|
||
lnMaxLenRow = LEN(m.laNoRow[1])
|
||
FOR lniNoRow = 2 TO m.lnNoRow
|
||
IF m.lnMaxLenRow < LEN(m.laNoRow[m.lniNoRow])
|
||
m.lnMaxLenRow = LEN(m.laNoRow[m.lniNoRow])
|
||
ENDIF
|
||
NEXT
|
||
lnCommH = MAX(3,MIN(m.lnNoRow - 2, MAXIMUMCOMMENTHEIGHT))
|
||
lnCommW = MAX(2, MIN(CEILING(m.lnMaxLenRow / 5), MAXIMUMCOMMENTWIDTH))
|
||
FWRITE(m.lnFHDr,[<x:Anchor> ] + LTRIM(STR(m.lnCurCol)) + [, 15, ] + LTRIM(STR(m.lnCurRow - 1)) + [, 2, ] + LTRIM(STR(m.lnCurCol + m.lnCommW)) + [, 31, ] + LTRIM(STR(m.lnCurRow + m.lnCommH)) + [, 1</x:Anchor>])
|
||
|
||
FWRITE(m.lnFHDr,[<x:AutoFill>False</x:AutoFill>])
|
||
FWRITE(m.lnFHDr,[<x:Row>] + LTRIM(STR(m.lnCurRow - 1)) + [</x:Row>])
|
||
FWRITE(m.lnFHDr,[<x:Column>] + LTRIM(STR(m.lnCurCol - 1)) + [</x:Column>])
|
||
FWRITE(m.lnFHDr,[</x:ClientData>])
|
||
FWRITE(m.lnFHDr,[</v:shape>])
|
||
ENDIF
|
||
ELSE
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["] + m.lcStN + [ t="s"></c>]) && Empty cell
|
||
ELSE
|
||
llCR=AT(CHR(13),m.lcValue)>0 or AT(CHR(10),m.lcValue)>0
|
||
SELECT (m.cStrings)
|
||
SET ORDER TO cM
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
lnII = 0
|
||
SCAN
|
||
IF cM == m.lcValue
|
||
lnII = ii
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
IF lnII > 0
|
||
FWRITE(m.lnFHSh,["] + IIF(m.llCR,m.lcStM, m.lcStN)+[ t="s"><v>]+LTRIM(STR(m.lnII))+[</v></c>])
|
||
ELSE
|
||
FWRITE(m.lnFHStr,[<si><t>]+This.htmspec(m.lcValue,m.lcStrBad)+[</t></si>])
|
||
INSERT INTO (m.cStrings) (cM) VALUES (m.lcValue)
|
||
SELECT MAX(ii) as ii FROM (m.cStrings) INTO CURSOR (m.cMax)
|
||
SELECT (m.cMax)
|
||
lnII = ii
|
||
FWRITE(m.lnFHSh,["] + IIF(m.llCR,m.lcStM, m.lcStN)+[ t="s"><v>]+LTRIM(STR(m.lnII))+[</v></c>])
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
NEXT
|
||
FWRITE(m.lnFHSh,[</row>]+CHR(10))
|
||
ENDSCAN
|
||
CASE m.llMemos AND m.lnLenIdx >= m.lnLenStr
|
||
SCAN
|
||
lnCurRow = m.lnCurRow + 1
|
||
IF m.lnCurRow > This.LastRow
|
||
EXIT
|
||
ENDIF
|
||
lcCurRow = LTRIM(STR(m.lnCurRow))
|
||
SCATTER MEMO TO lala
|
||
lnNoRows = 1
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
IF m.laFields[m.lnCurCol,2] = 9
|
||
lnNoRows = MAX(m.lnNoRows , 1 + OCCURS(CHR(13),RTRIM(lala[m.laFields[m.lnCurCol,7]])))
|
||
ENDIF
|
||
NEXT
|
||
lcRowHeight = [ customHeight="1" ht="] + LTRIM(STR(IIF(This.RowFontSize>0,This.RowFontSize,11) * m.lnNoRows * 1.275,10,2)) + ["]
|
||
FWRITE(m.lnFHSh,[<row r="]+m.lcCurRow+["] + m.lcRowHeight + [>])
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
SET ORDER TO cStr IN (m.cStrings)
|
||
lcValue = lala[m.laFields[m.lnCurCol,7]]
|
||
IF ISNULL(m.lcValue)
|
||
LOOP
|
||
ENDIF
|
||
lnType = m.laFields[m.lnCurCol,2]
|
||
lnDec = m.laFields[m.lnCurCol,4]
|
||
FWRITE(m.lnFHSh,[<c r="]+m.laFields[m.lnCurCol,5]+m.lcCurRow)
|
||
IF m.lnType = 1
|
||
lcValue = RTRIM(m.lcValue)
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[></c>]) && Empty cell
|
||
ELSE
|
||
SELECT (m.cStrings)
|
||
SEEK m.lcValue
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
ENDIF
|
||
SELECT (m.cCur)
|
||
ELSE
|
||
IF m.lnType = 2
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,m.laFields[m.lnCurCol,3],m.lnDec))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 3
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 4
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
IF m.lcValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat11))+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.lcValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat12))+[</v></c>])
|
||
ELSE
|
||
lcValue = DTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SEEK m.lcValue
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType = 5
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
ltTime = m.lcValue
|
||
ldValue = TTOD(m.lcValue)
|
||
lnTime = (m.ltTime-DATETIME(YEAR(m.ltTime),MONTH(m.ltTime),DAY(m.ltTime),0,0,0))/(86400.0)
|
||
IF m.ldValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat11))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.ldValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat12))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
lcValue = TTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SEEK m.lcValue
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType = 6
|
||
FWRITE(m.lnFHSh,[" t="b"] + m.lcStN +[><v>]+IIF(m.lcValue ,[1],[0])+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 7
|
||
FWRITE(m.lnFHSh,["] + m.lcStC +[><v>]+LTRIM(STR(m.lcValue,21,4))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 8
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,21,m.lnDec))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 9
|
||
lcValue = RTRIM(m.lcValue)
|
||
IF m.llMemoAsComment
|
||
lnCurComm = m.lnCurComm + 1
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["] + m.lcStN + [ t="s"></c>]) && Empty cell
|
||
ELSE
|
||
FWRITE(m.lnFHSh,["] + m.lcStN + [ t="s"><v>0</v></c>]) && Tyoe "Memo" in sheet1
|
||
FWRITE(m.lnFHCo,[<comment authorId="0" ref="] + m.laFields[m.lnCurCol,5]+m.lcCurRow + [">]) && comments1
|
||
FWRITE(m.lnFHCo,[<text>])
|
||
FWRITE(m.lnFHCo,[<r>])
|
||
FWRITE(m.lnFHCo,[<rPr>])
|
||
FWRITE(m.lnFHCo,[<sz val="9"/>])
|
||
FWRITE(m.lnFHCo,[<color indexed="81"/>])
|
||
FWRITE(m.lnFHCo,[<rFont val="Tahoma"/>])
|
||
FWRITE(m.lnFHCo,[<family val="2"/>])
|
||
FWRITE(m.lnFHCo,[<charset val="238"/>])
|
||
FWRITE(m.lnFHCo,[</rPr>])
|
||
FWRITE(m.lnFHCo,[<t>] + m.lcValue + [</t>])
|
||
FWRITE(m.lnFHCo,[</r>])
|
||
FWRITE(m.lnFHCo,[</text>])
|
||
FWRITE(m.lnFHCo,[</comment>])
|
||
|
||
|
||
FWRITE(m.lnFHDr,[<v:shape id="_x] + PADL(LTRIM(STR(m.lnCurComm)),10,"0") + [" o:insetmode="auto" fillcolor="#ffffe1" style="position:absolute; margin-left:] + ;
|
||
LTRIM(STR(59.25 + 48 * (m.lnCurCol - 1))) + [pt;margin-top:] + LTRIM(STR(1.5 + 15 * (m.lnCurRow - 1))) + [pt;width:108pt;height:59.25pt;z-index:] + ;
|
||
LTRIM(STR(m.lnCurComm)) + [; visibility:hidden" type="#_x0000_t202">])
|
||
FWRITE(m.lnFHDr,[<v:fill color2="#ffffe1"/>])
|
||
FWRITE(m.lnFHDr,[<v:shadow obscured="t" color="black" on="t"/>])
|
||
FWRITE(m.lnFHDr,[<v:path o:connecttype="none"/>])
|
||
FWRITE(m.lnFHDr,[<v:textbox style="mso-direction-alt:auto">])
|
||
FWRITE(m.lnFHDr,[<div style="text-align:left"/>])
|
||
FWRITE(m.lnFHDr,[</v:textbox>])
|
||
FWRITE(m.lnFHDr,[<x:ClientData ObjectType="Note">])
|
||
FWRITE(m.lnFHDr,[<x:MoveWithCells/>])
|
||
FWRITE(m.lnFHDr,[<x:SizeWithCells/>])
|
||
|
||
|
||
lnNoRow = ALINES(laNoRow,m.lcValue)
|
||
lnMaxLenRow = LEN(m.laNoRow[1])
|
||
FOR lniNoRow = 2 TO m.lnNoRow
|
||
IF m.lnMaxLenRow < LEN(m.laNoRow[m.lniNoRow])
|
||
m.lnMaxLenRow = LEN(m.laNoRow[m.lniNoRow])
|
||
ENDIF
|
||
NEXT
|
||
lnCommH = MAX(3,MIN(m.lnNoRow - 2, MAXIMUMCOMMENTHEIGHT))
|
||
lnCommW = MAX(2, MIN(CEILING(m.lnMaxLenRow / 5), MAXIMUMCOMMENTWIDTH))
|
||
FWRITE(m.lnFHDr,[<x:Anchor> ] + LTRIM(STR(m.lnCurCol)) + [, 15, ] + LTRIM(STR(m.lnCurRow - 1)) + [, 2, ] + LTRIM(STR(m.lnCurCol + m.lnCommW)) + [, 31, ] + LTRIM(STR(m.lnCurRow + m.lnCommH)) + [, 1</x:Anchor>])
|
||
|
||
FWRITE(m.lnFHDr,[<x:AutoFill>False</x:AutoFill>])
|
||
FWRITE(m.lnFHDr,[<x:Row>] + LTRIM(STR(m.lnCurRow - 1)) + [</x:Row>])
|
||
FWRITE(m.lnFHDr,[<x:Column>] + LTRIM(STR(m.lnCurCol - 1)) + [</x:Column>])
|
||
FWRITE(m.lnFHDr,[</x:ClientData>])
|
||
FWRITE(m.lnFHDr,[</v:shape>])
|
||
ENDIF
|
||
ELSE
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["] + m.lcStN + [ t="s"></c>]) && Empty cell
|
||
ELSE
|
||
llCR=AT(CHR(13),m.lcValue)>0 or AT(CHR(10),m.lcValue)>0
|
||
SELECT (m.cStrings)
|
||
SET ORDER TO cM
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
lnII = 0
|
||
SCAN
|
||
IF cM == m.lcValue
|
||
lnII = ii
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
IF lnII > 0
|
||
FWRITE(m.lnFHSh,["] + IIF(m.llCR,m.lcStM, m.lcStN)+[ t="s"><v>]+LTRIM(STR(m.lnII))+[</v></c>])
|
||
ELSE
|
||
FWRITE(m.lnFHStr,[<si><t>]+This.htmspec(m.lcValue,m.lcStrBad)+[</t></si>])
|
||
INSERT INTO (m.cStrings) (cM) VALUES (m.lcValue)
|
||
SELECT MAX(ii) as ii FROM (m.cStrings) INTO CURSOR (m.cMax)
|
||
SELECT (m.cMax)
|
||
lnII = ii
|
||
FWRITE(m.lnFHSh,["] + IIF(m.llCR,m.lcStM, m.lcStN)+[ t="s"><v>]+LTRIM(STR(m.lnII))+[</v></c>])
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
NEXT
|
||
FWRITE(m.lnFHSh,[</row>]+CHR(10))
|
||
ENDSCAN
|
||
CASE !m.llMemos AND m.lnLenIdx < m.lnLenStr
|
||
SET ORDER TO cStr IN (m.cStrings)
|
||
SCAN
|
||
lnCurRow = m.lnCurRow + 1
|
||
IF m.lnCurRow > This.LastRow
|
||
EXIT
|
||
ENDIF
|
||
lcCurRow = LTRIM(STR(m.lnCurRow))
|
||
FWRITE(m.lnFHSh,[<row r="]+m.lcCurRow+["] + m.lcRowHeight + [>]) &&spans="1:1" x14ac:dyDescent="0.25"
|
||
SCATTER TO lala
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
lcValue = lala[m.laFields[m.lnCurCol,7]]
|
||
IF ISNULL(m.lcValue)
|
||
LOOP
|
||
ENDIF
|
||
lnType = m.laFields[m.lnCurCol,2]
|
||
lnDec = m.laFields[m.lnCurCol,4]
|
||
FWRITE(m.lnFHSh,[<c r="]+m.laFields[m.lnCurCol,5]+m.lcCurRow)
|
||
IF m.lnType = 1
|
||
lcValue = RTRIM(m.lcValue)
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[></c>]) && Empty cell
|
||
ELSE
|
||
SELECT (m.cStrings)
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
SCAN
|
||
IF cStr == m.lcValue
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
ENDIF
|
||
SELECT (m.cCur)
|
||
ELSE
|
||
IF m.lnType = 2
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,m.laFields[m.lnCurCol,3],m.lnDec))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 3
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 4
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
IF m.lcValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat11))+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.lcValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat12))+[</v></c>])
|
||
ELSE
|
||
lcValue = DTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
SCAN
|
||
IF cStr == m.lcValue
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType = 5
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
ltTime = m.lcValue
|
||
ldValue = TTOD(m.lcValue)
|
||
lnTime = (m.ltTime-DATETIME(YEAR(m.ltTime),MONTH(m.ltTime),DAY(m.ltTime),0,0,0))/(86400.0)
|
||
IF m.ldValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat11))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.ldValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat12))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
lcValue = TTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SET KEY TO LEFT(m.lcValue,m.lnLenIdx)
|
||
SCAN
|
||
IF cStr == m.lcValue
|
||
EXIT
|
||
ENDIF
|
||
ENDSCAN
|
||
SET KEY TO
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType = 6
|
||
FWRITE(m.lnFHSh,[" t="b"] + m.lcStN +[><v>]+IIF(m.lcValue ,[1],[0])+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 7
|
||
FWRITE(m.lnFHSh,["] + m.lcStC +[><v>]+LTRIM(STR(m.lcValue,21,4))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 8
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,21,m.lnDec))+[</v></c>])
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
NEXT
|
||
FWRITE(m.lnFHSh,[</row>]+CHR(10))
|
||
ENDSCAN
|
||
CASE !m.llMemos AND m.lnLenIdx >= m.lnLenStr
|
||
SET ORDER TO cStr IN (m.cStrings)
|
||
SCAN
|
||
lnCurRow = m.lnCurRow + 1
|
||
IF m.lnCurRow > This.LastRow
|
||
EXIT
|
||
ENDIF
|
||
lcCurRow = LTRIM(STR(m.lnCurRow))
|
||
FWRITE(m.lnFHSh,[<row r="]+m.lcCurRow+["] + m.lcRowHeight + [>]) &&spans="1:1" x14ac:dyDescent="0.25"
|
||
SCATTER TO lala
|
||
FOR lnCurCol = 1 TO m.lnColsNo
|
||
lcValue = lala[m.laFields[m.lnCurCol,7]]
|
||
IF ISNULL(m.lcValue)
|
||
LOOP
|
||
ENDIF
|
||
lnType = m.laFields[m.lnCurCol,2]
|
||
lnDec = m.laFields[m.lnCurCol,4]
|
||
FWRITE(m.lnFHSh,[<c r="]+m.laFields[m.lnCurCol,5]+m.lcCurRow)
|
||
IF m.lnType = 1
|
||
lcValue = RTRIM(m.lcValue)
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[></c>]) && Empty cell
|
||
ELSE
|
||
SELECT (m.cStrings)
|
||
SEEK m.lcValue
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
ENDIF
|
||
SELECT (m.cCur)
|
||
ELSE
|
||
IF m.lnType = 2
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,m.laFields[m.lnCurCol,3],m.lnDec))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 3
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 4
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
IF m.lcValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat11))+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.lcValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStD +[><v>]+LTRIM(STR(m.lcValue - m.ldDat12))+[</v></c>])
|
||
ELSE
|
||
lcValue = DTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SEEK m.lcValue
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType = 5
|
||
IF EMPTY(m.lcValue)
|
||
FWRITE(m.lnFHSh,["></c>]) && Empty cell
|
||
ELSE
|
||
ltTime = m.lcValue
|
||
ldValue = TTOD(m.lcValue)
|
||
lnTime = (m.ltTime-DATETIME(YEAR(m.ltTime),MONTH(m.ltTime),DAY(m.ltTime),0,0,0))/(86400.0)
|
||
IF m.ldValue >= m.ldDat01
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat11))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
IF BETWEEN(m.ldValue,m.ldDat02,m.ldDat03)
|
||
FWRITE(m.lnFHSh,["] + m.lcStT +[><v>]+LTRIM(STR(m.ldValue - m.ldDat12))+SUBSTR(TRANSFORM(m.lnTime),2,14)+[</v></c>])
|
||
ELSE
|
||
lcValue = TTOC(m.lcValue)
|
||
SELECT (m.cStrings)
|
||
SEEK m.lcValue
|
||
FWRITE(m.lnFHSh,[" t="s"] + m.lcStN +[><v>]+LTRIM(STR(II))+[</v></c>])
|
||
SELECT (m.cCur)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF m.lnType = 6
|
||
FWRITE(m.lnFHSh,[" t="b"] + m.lcStN +[><v>]+IIF(m.lcValue ,[1],[0])+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 7
|
||
FWRITE(m.lnFHSh,["] + m.lcStC +[><v>]+LTRIM(STR(m.lcValue,21,4))+[</v></c>])
|
||
ELSE
|
||
IF m.lnType = 8
|
||
FWRITE(m.lnFHSh,["] + m.lcStN +[><v>]+LTRIM(STR(m.lcValue,21,m.lnDec))+[</v></c>])
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
NEXT
|
||
FWRITE(m.lnFHSh,[</row>]+CHR(10))
|
||
ENDSCAN
|
||
ENDCASE
|
||
|
||
SET DECIMALS TO &lcSetDec
|
||
|
||
* End sheet1
|
||
FWRITE(m.lnFHSh,[</sheetData>])
|
||
FWRITE(m.lnFHSh,[<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>])
|
||
IF m.llMemoAsComment AND m.llMemos
|
||
FWRITE(m.lnFHSh,[<legacyDrawing r:id="rId6"/>])
|
||
ENDIF
|
||
FWRITE(m.lnFHSh,[</worksheet>])
|
||
FCLOSE(m.lnFHSh)
|
||
|
||
* End sharedStrings
|
||
FWRITE(m.lnFHStr,[</sst>])
|
||
FSEEK(m.lnFHStr,55+1+LEN([<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="]))
|
||
FWRITE(m.lnFHStr,LTRIM(STR(m.lnTotal))+[" uniqueCount="]+LTRIM(STR(RECCOUNT(m.cStrings)))+[">])
|
||
FCLOSE(m.lnFHStr)
|
||
|
||
IF m.llMemoAsComment AND m.llMemos
|
||
* End comment1
|
||
FWRITE(m.lnFHCo,[</commentList>])
|
||
FWRITE(m.lnFHCo,[</comments>])
|
||
FCLOSE(m.lnFHCo)
|
||
* End comment1
|
||
FWRITE(m.lnFHDr,[</xml>])
|
||
FCLOSE(m.lnFHDr)
|
||
ENDIF
|
||
|
||
*****
|
||
|
||
lcSource = m.lcMyPath + m.lcDir &&"<< fully qualified path name to some folder >>"
|
||
*lcZipFileName = m.lcMyPath + FORCEEXT(m.lcFileName,'zip') &&"<< fully qualified path name to some zip file >>"
|
||
lcZipFileName = FORCEEXT(m.lcFileName,'zip') &&"<< fully qualified path name to some zip file >>"
|
||
|
||
TRY
|
||
IF FILE(m.lcZipFileName)
|
||
ERASE (m.lcZipFileName)
|
||
ENDIF
|
||
CATCH TO m.loerr
|
||
ENDTRY
|
||
|
||
TRY
|
||
IF FILE(m.lcFileName)
|
||
ERASE (m.lcFileName)
|
||
ENDIF
|
||
CATCH TO m.loerr
|
||
ENDTRY
|
||
|
||
STRTOFILE(CHR( 80 )+CHR( 75 )+CHR( 5 )+CHR( 6 )+REPLICATE( CHR(0), 18 ), m.lcZipFileName)
|
||
oShell = CREATEOBJECT("shell.application")
|
||
oFolder = m.oShell.NameSpace( m.lcSource ).items
|
||
|
||
llBelow7 = OS(3)<'6' OR OS(3)='6' AND OS(4)<'1'
|
||
IF m.llBelow7 && Win XP
|
||
TRY
|
||
FOR EACH ofile IN m.oFolder
|
||
lnCountbefore = m.oShell.NameSpace( m.lcSource ).items.count
|
||
oShell.NameSpace( m.lcZipFileName ).copyhere( m.ofile )
|
||
sleep(100)
|
||
ENDFOR
|
||
CATCH TO loErr
|
||
ENDTRY
|
||
|
||
llErr = .T.
|
||
DO WHILE llErr
|
||
TRY
|
||
llErr = .F.
|
||
RENAME (m.lcZipFileName) TO (FORCEEXT(m.lcZipFileName,"xlsx"))
|
||
CATCH
|
||
llErr = .T.
|
||
sleep(100)
|
||
ENDTRY
|
||
ENDDO
|
||
This.cleanup(m.lcDir,m.llMemoAsComment AND m.llMemos,m.llToClose,m.cCur,m.cTotal,m.cMax,m.cStrings,m.lcCurrAlias,m.lnFHSh,m.lnFHStr,m.lnFHCo,m.lnFHDr,m.lcOldPath)
|
||
ELSE && WIN 7
|
||
TRY
|
||
FOR EACH ofile IN m.oFolder
|
||
lnCountbefore = m.oShell.NameSpace( m.lcSource ).items.count
|
||
oShell.NameSpace( m.lcZipFileName ).movehere( m.ofile )
|
||
sleep(100)
|
||
DO WHILE m.lnCountbefore = m.oShell.NameSpace( m.lcSource ).items.count
|
||
sleep(100)
|
||
ENDDO
|
||
ENDFOR
|
||
CATCH TO loErr
|
||
ENDTRY
|
||
|
||
TRY
|
||
RD (m.lcDir)
|
||
CATCH TO m.loErr
|
||
ENDTRY
|
||
|
||
This.cleanup2(m.llToClose,m.cCur,m.cTotal,m.cMax,m.cStrings,m.lcCurrAlias,m.lnFHSh,m.lnFHStr,m.lnFHCo,m.lnFHDr,m.lcOldPath)
|
||
RENAME (m.lcZipFileName) TO (FORCEEXT(m.lcZipFileName,"xlsx"))
|
||
ENDIF
|
||
IF This.lOpen
|
||
ShellExecute(0,"Open",FORCEEXT(m.lcZipFileName,"xlsx"),"","",1)
|
||
ENDIF
|
||
|
||
SET TALK &lSetTalk
|
||
SET POINT TO lcSetPoint
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_app
|
||
*****************************
|
||
* Generate docProps\app.xml *
|
||
*****************************
|
||
LPARAMETERS lcDir
|
||
LOCAL lnF
|
||
lnF = FCREATE(m.lcDir+"app.xml")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' app.xml',16,This.aErrMess[1])
|
||
This.lError=.T.
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnF,[<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">])
|
||
FWRITE(m.lnF,[<Application>exportxlsx</Application>])
|
||
FWRITE(m.lnF,[<AppVersion>5.1000</AppVersion>])
|
||
FWRITE(m.lnF,[</Properties>])
|
||
FCLOSE(m.lnF)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_content_types
|
||
********************************
|
||
* Generate [Content_Types].xml *
|
||
********************************
|
||
LPARAMETERS lcDir,llMemoAsComment
|
||
LOCAL lnF
|
||
lnF = FCREATE(m.lcDir+"[Content_Types].xml")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' [Content_Types].xml',16,This.aErrMess[1])
|
||
This.lError=.T.
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>])
|
||
FWRITE(m.lnF,[<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">])
|
||
FWRITE(m.lnF,[<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>])
|
||
FWRITE(m.lnF,[<Default Extension="xml" ContentType="application/xml"/>])
|
||
IF m.llMemoAsComment
|
||
FWRITE(m.lnF,[<Default ContentType="application/vnd.openxmlformats-officedocument.vmlDrawing" Extension="vml"/>])
|
||
FWRITE(m.lnF,[<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" PartName="/xl/comments1.xml"/>])
|
||
ENDIF
|
||
FWRITE(m.lnF,[<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>])
|
||
FWRITE(m.lnF,[<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>])
|
||
FWRITE(m.lnF,[<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>])
|
||
FWRITE(m.lnF,[<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>])
|
||
FWRITE(m.lnF,[<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>])
|
||
FWRITE(m.lnF,[<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>]+CHR(10))
|
||
FWRITE(m.lnF,[</Types>])
|
||
FCLOSE(m.lnF)
|
||
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_core
|
||
******************************
|
||
* Generate docProps\core.xml *
|
||
******************************
|
||
LPARAMETERS lcDir
|
||
LOCAL lnF
|
||
lnF = FCREATE(m.lcDir+"core.xml")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' core.xml',16,This.aErrMess[1])
|
||
This.lError=.T.
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnF,[<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" ])
|
||
FWRITE(m.lnF,[xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">])
|
||
FWRITE(m.lnF,[<dc:creator>Vilhelm-Ion Praisach</dc:creator>])
|
||
FWRITE(m.lnF,[<dcterms:created xsi:type="dcterms:W3CDTF">]+TTOC(DATETIME(),3)+[</dcterms:created>])
|
||
FWRITE(m.lnF,[</cp:coreProperties>])
|
||
FCLOSE(m.lnF)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_dirs
|
||
**********************
|
||
* Generate temp dirs *
|
||
**********************
|
||
LPARAMETERS llMemoAsComment
|
||
LOCAL lcDir
|
||
lcDir=ADDBS(SYS(2015))
|
||
MD (m.lcDir)
|
||
MD (ADDBS(m.lcDir+[_rels]))
|
||
MD (ADDBS(m.lcDir+[docProps]))
|
||
MD (ADDBS(m.lcDir+[xl]))
|
||
MD (ADDBS(ADDBS(m.lcDir+[xl])+[_rels]))
|
||
MD (ADDBS(ADDBS(m.lcDir+[xl])+[worksheets]))
|
||
IF m.llMemoAsComment
|
||
MD (ADDBS(ADDBS(m.lcDir+[xl])+[drawings]))
|
||
MD (ADDBS(ADDBS(ADDBS(m.lcDir+[xl])+[worksheets])+[_rels]))
|
||
ENDIF
|
||
RETURN m.lcDir
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_rels
|
||
***************************
|
||
* Generate _rels\rels.xml *
|
||
***************************
|
||
LPARAMETERS lcDir
|
||
LOCAL lnF
|
||
lnF = FCREATE(m.lcDir+".rels")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' .rels',16,This.aErrMess[1])
|
||
This.lError=.T.
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnF,[<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">])
|
||
FWRITE(m.lnF,[<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>])
|
||
FWRITE(m.lnF,[<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>])
|
||
FWRITE(m.lnF,[<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>]+CHR(10))
|
||
FWRITE(m.lnF,[</Relationships>])
|
||
FCLOSE(m.lnF)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_styles
|
||
**************************
|
||
* Generate xl\styles.xml *
|
||
**************************
|
||
LPARAMETERS lcDir,lcCurr,llMemoAsComment
|
||
LOCAL lnF,lnFonts,laFo[1],llHead,llRow,lcColor,lnFills,lnCellF,lnFontIdHead,lnFontIdRow,lnFillIdHead,lnFillIdRow,lcFont,lni
|
||
*
|
||
lnFonts = 1
|
||
STORE .F. TO llHead,llRow
|
||
IF BETWEEN(this.headforecolor,0,RGB(255,255,255)) OR ;
|
||
this.headFontBold OR ;
|
||
this.headFontItalic OR ;
|
||
(!EMPTY(This.headFontName) AND AFONT(laFont,This.headFontName)) OR ;
|
||
This.headFontSize > 0
|
||
lnFonts = m.lnFonts +1
|
||
llHead = .T.
|
||
ENDIF
|
||
IF BETWEEN(this.rowforecolor,0,RGB(255,255,255)) OR ;
|
||
this.rowFontBold OR ;
|
||
this.rowFontItalic OR ;
|
||
(!EMPTY(This.rowFontName) AND AFONT(laFont,This.rowFontName)) OR ;
|
||
This.rowFontSize > 0
|
||
lnFonts = m.lnFonts +1
|
||
llRow = .T.
|
||
ENDIF
|
||
*
|
||
lnFills = 2
|
||
IF BETWEEN(this.headbackcolor,0,RGB(255,255,255)) AND This.HeadFill
|
||
lnFills = m.lnFills + 1
|
||
ENDIF
|
||
IF BETWEEN(this.rowbackcolor,0,RGB(255,255,255)) AND This.RowFill
|
||
lnFills = m.lnFills + 1
|
||
ENDIF
|
||
lnF = FCREATE(m.lcDir+"styles.xml")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' styles.xml',16,This.aErrMess[1])
|
||
This.lError=.T.
|
||
RETURN
|
||
ENDIF
|
||
*
|
||
lnCellF = 5
|
||
IF m.llHead OR (BETWEEN(this.headbackcolor,0,RGB(255,255,255)) AND This.HeadFill)
|
||
lnCellF = m.lnCellF + 1
|
||
ENDIF
|
||
IF m.llRow OR (BETWEEN(this.rowbackcolor,0,RGB(255,255,255)) AND This.RowFill)
|
||
lnCellF = m.lnCellF + 5
|
||
ENDIF
|
||
*
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnF,[<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" ])
|
||
FWRITE(m.lnF,[mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">])
|
||
FWRITE(m.lnF,[<numFmts count="2">]) && currency
|
||
FWRITE(m.lnF,[<numFmt numFmtId="164" formatCode="]+m.lcCurr+["/>])
|
||
FWRITE(m.lnF,[<numFmt formatCode="dd/mm/yyyy\ hh:mm:ss" numFmtId="22"/>])
|
||
FWRITE(m.lnF,[</numFmts>])
|
||
STORE 0 TO m.lnFontIdHead,m.lnFontIdRow
|
||
IF m.llMemoAsComment
|
||
FWRITE(m.lnF,[<fonts count="] + LTRIM(STR(m.lnFonts + 1)) + [" x14ac:knownFonts="1">])
|
||
ELSE
|
||
FWRITE(m.lnF,[<fonts count="] + LTRIM(STR(m.lnFonts)) + [" x14ac:knownFonts="1">])
|
||
ENDIF
|
||
FWRITE(m.lnF,[<font><sz val="11"/>])
|
||
FWRITE(m.lnF,[<color theme="1"/>])
|
||
FWRITE(m.lnF,[<name val="Calibri"/>])
|
||
FWRITE(m.lnF,[<family val="2"/>])
|
||
FWRITE(m.lnF,[<charset val="238"/>])
|
||
FWRITE(m.lnF,[<scheme val="minor"/>])
|
||
FWRITE(m.lnF,[</font>])
|
||
IF m.llHead
|
||
lnFontIdHead = 1
|
||
FWRITE(m.lnF,[<font>])
|
||
IF this.headFontBold
|
||
FWRITE(m.lnF,[<b/>])
|
||
ENDIF
|
||
IF this.headFontItalic
|
||
FWRITE(m.lnF,[<i/>])
|
||
ENDIF
|
||
IF This.headFontSize > 0
|
||
FWRITE(m.lnF,[<sz val="]+LTRIM(STR(INT(This.headFontSize)))+["/>])
|
||
ELSE
|
||
FWRITE(m.lnF,[<sz val="11"/>])
|
||
ENDIF
|
||
IF BETWEEN(this.headforecolor,0,RGB(255,255,255))
|
||
lcColor = TRANSFORM(this.headforecolor,"@0")
|
||
FWRITE(m.lnF,[<color rgb="FF] + SUBSTR(m.lcColor,9,2) + SUBSTR(m.lcColor,7,2) + SUBSTR(m.lcColor,5,2) +["/>])
|
||
ENDIF
|
||
IF (!EMPTY(This.headFontName) AND AFONT(laFont,This.headFontName))
|
||
FWRITE(m.lnF,[<name val="]+This.headFontName+["/>])
|
||
ELSE
|
||
FWRITE(m.lnF,[<name val="Calibri"/>])
|
||
ENDIF
|
||
FWRITE(m.lnF,[</font>])
|
||
ENDIF
|
||
IF m.llRow
|
||
lnFontIdRow = 1 + m.lnFontIdHead
|
||
FWRITE(m.lnF,[<font>])
|
||
IF this.RowFontBold
|
||
FWRITE(m.lnF,[<b/>])
|
||
ENDIF
|
||
IF this.RowFontItalic
|
||
FWRITE(m.lnF,[<i/>])
|
||
ENDIF
|
||
IF This.RowFontSize > 0
|
||
FWRITE(m.lnF,[<sz val="]+LTRIM(STR(INT(This.RowFontSize)))+["/>])
|
||
ELSE
|
||
FWRITE(m.lnF,[<sz val="11"/>])
|
||
ENDIF
|
||
IF BETWEEN(this.Rowforecolor,0,RGB(255,255,255))
|
||
lcColor = TRANSFORM(this.Rowforecolor,"@0")
|
||
FWRITE(m.lnF,[<color rgb="FF] + SUBSTR(m.lcColor,9,2) + SUBSTR(m.lcColor,7,2) + SUBSTR(m.lcColor,5,2) +["/>])
|
||
ENDIF
|
||
IF (!EMPTY(This.RowFontName) AND AFONT(laFont,This.RowFontName))
|
||
FWRITE(m.lnF,[<name val="]+This.RowFontName+["/>])
|
||
ELSE
|
||
FWRITE(m.lnF,[<name val="Calibri"/>])
|
||
ENDIF
|
||
FWRITE(m.lnF,[</font>])
|
||
ENDIF
|
||
IF m.llMemoAsComment
|
||
FWRITE(m.lnF,[<font>])
|
||
FWRITE(m.lnF,[<sz val="9"/>])
|
||
FWRITE(m.lnF,[<color indexed="81"/>])
|
||
FWRITE(m.lnF,[<name val="Tahoma"/>])
|
||
FWRITE(m.lnF,[<family val="2"/>])
|
||
FWRITE(m.lnF,[<charset val="238"/>])
|
||
FWRITE(m.lnF,[</font>])
|
||
ENDIF
|
||
FWRITE(m.lnF,[</fonts>])
|
||
|
||
STORE 0 TO m.lnFillIdHead,m.lnFillIdRow
|
||
FWRITE(m.lnF,[<fills count="] + LTRIM(STR(m.lnFills)) + [">])
|
||
FWRITE(m.lnF,[<fill>])
|
||
FWRITE(m.lnF,[<patternFill patternType="none"/>])
|
||
FWRITE(m.lnF,[</fill>])
|
||
FWRITE(m.lnF,[<fill>])
|
||
FWRITE(m.lnF,[<patternFill patternType="gray125"/>])
|
||
FWRITE(m.lnF,[</fill>])
|
||
IF BETWEEN(this.headbackcolor,0,RGB(255,255,255)) AND This.HeadFill
|
||
lnFillIdHead = 2
|
||
FWRITE(m.lnF,[<fill>])
|
||
FWRITE(m.lnF,[<patternFill patternType="solid">])
|
||
lcColor = TRANSFORM(this.headbackcolor,"@0")
|
||
FWRITE(m.lnF,[<fgColor rgb="FF] + SUBSTR(m.lcColor,9,2) + SUBSTR(m.lcColor,7,2) + SUBSTR(m.lcColor,5,2) +["/>])
|
||
FWRITE(m.lnF,[<bgColor indexed="64"/>])
|
||
FWRITE(m.lnF,[</patternFill>])
|
||
FWRITE(m.lnF,[</fill>])
|
||
ENDIF
|
||
IF BETWEEN(this.rowbackcolor,0,RGB(255,255,255)) AND This.rowFill
|
||
lnFillIdRow = 2 + IIF(m.lnFillIdHead > 0, 1, 0)
|
||
FWRITE(m.lnF,[<fill>])
|
||
FWRITE(m.lnF,[<patternFill patternType="solid">])
|
||
lcColor = TRANSFORM(this.rowbackcolor,"@0")
|
||
FWRITE(m.lnF,[<fgColor rgb="FF] + SUBSTR(m.lcColor,9,2) + SUBSTR(m.lcColor,7,2) + SUBSTR(m.lcColor,5,2) +["/>])
|
||
FWRITE(m.lnF,[<bgColor indexed="64"/>])
|
||
FWRITE(m.lnF,[</patternFill>])
|
||
FWRITE(m.lnF,[</fill>])
|
||
ENDIF
|
||
FWRITE(m.lnF,[</fills>])
|
||
FWRITE(m.lnF,[<borders count="1">])
|
||
FWRITE(m.lnF,[<border>])
|
||
FWRITE(m.lnF,[<left/><right/><top/><bottom/><diagonal/>])
|
||
FWRITE(m.lnF,[</border>])
|
||
FWRITE(m.lnF,[</borders>])
|
||
FWRITE(m.lnF,[<cellXfs count="] + LTRIM(STR(m.lnCellF)) + [">])
|
||
lcFont = [fontId="0" fillId="0" ]
|
||
This.aStyles[6] = 0
|
||
FOR lni = 1 TO 5
|
||
This.aStyles[m.lni] = m.lni - 1
|
||
NEXT
|
||
FWRITE(m.lnF,[<xf numFmtId="0" ] + m.lcFont + [/>]) && Number
|
||
FWRITE(m.lnF,[<xf numFmtId="14" ] + m.lcFont + [applyNumberFormat="1"/>]) && date
|
||
FWRITE(m.lnF,[<xf numFmtId="22" ] + m.lcFont + [applyNumberFormat="1"/>]) && time
|
||
FWRITE(m.lnF,[<xf numFmtId="0" ] + m.lcFont + [applyAlignment="1"><alignment wrapText="1"/></xf>]) && enter in memo
|
||
FWRITE(m.lnF,[<xf numFmtId="164" ] + m.lcFont + [applyNumberFormat="1"/>]) && currency
|
||
IF m.llHead OR (BETWEEN(this.headbackcolor,0,RGB(255,255,255)) AND This.headFill)
|
||
FWRITE(m.lnF,[<xf numFmtId="0" fontId="] + LTRIM(STR(m.lnFontIdHead)) + [" fillId="] + LTRIM(STR(m.lnFillIdHead)) + [" ] + IIF(m.lnFontIdHead>0,[applyFont="1" ],[]) + IIF(m.lnFillIdHead>0,[applyFill="1" ],[]) + [/>]) && Number
|
||
This.aStyles[6] = 5
|
||
ENDIF
|
||
IF m.llRow OR (BETWEEN(this.rowbackcolor,0,RGB(255,255,255)) AND This.rowFill)
|
||
FOR lni = 1 TO 5
|
||
This.aStyles[m.lni] = m.lni + 4 + IIF(This.aStyles[6] >0,1,0)
|
||
NEXT
|
||
lcFont = [fontId="] + LTRIM(STR(m.lnFontIdrow)) + [" fillId="] + LTRIM(STR(m.lnFillIdrow)) + [" ] + IIF(m.lnFontIdrow>0,[applyFont="1" ],[]) + IIF(m.lnFillIdrow>0,[applyFill="1" ],[])
|
||
FWRITE(m.lnF,[<xf numFmtId="0" ] + m.lcFont + [/>]) && Number
|
||
FWRITE(m.lnF,[<xf numFmtId="14" ] + m.lcFont + [applyNumberFormat="1"/>]) && date
|
||
FWRITE(m.lnF,[<xf numFmtId="22" ] + m.lcFont + [applyNumberFormat="1"/>]) && time
|
||
FWRITE(m.lnF,[<xf numFmtId="0" ] + m.lcFont + [applyAlignment="1"><alignment wrapText="1"/></xf>]) && enter in memo
|
||
FWRITE(m.lnF,[<xf numFmtId="164" ] + m.lcFont + [applyNumberFormat="1"/>]) && currency
|
||
ENDIF
|
||
FWRITE(m.lnF,[</cellXfs>])
|
||
FWRITE(m.lnF,[</styleSheet>])
|
||
FCLOSE(m.lnF)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_workbook
|
||
***************************************
|
||
* Generate xl\_rels\workbook.xml.rels *
|
||
***************************************
|
||
LPARAMETERS lcDir,llMemoAsComment
|
||
LOCAL lnF
|
||
lnF = FCREATE(m.lcDir+"workbook.xml.rels")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' workbook.xml.rels',16,This.aErrMess[1])
|
||
This.lError=.T.
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnF,[<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">])
|
||
FWRITE(m.lnF,[<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>])
|
||
FWRITE(m.lnF,[<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>])
|
||
IF m.llMemoAsComment
|
||
FWRITE(m.lnF,[<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="../comments1.xml"/>])
|
||
FWRITE(m.lnF,[<Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" Target="../drawings/vmlDrawing1.vml"/>])
|
||
ENDIF
|
||
FWRITE(m.lnF,[<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>]+CHR(10))
|
||
FWRITE(m.lnF,[</Relationships>])
|
||
FCLOSE(m.lnF)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_workbook2
|
||
****************************
|
||
* Generate xl\workbook.xml *
|
||
****************************
|
||
LPARAMETERS lcDir
|
||
LOCAL lnF
|
||
lnF = FCREATE(m.lcDir+"workbook.xml")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' workbook.xml',16,This.aErrMess[1])
|
||
This.lError=.T.
|
||
RETURN
|
||
ENDIF
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
FWRITE(m.lnF,[<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">])
|
||
FWRITE(m.lnF,[<sheets>])
|
||
FWRITE(m.lnF,[<sheet name="] + This.sheetname + [" sheetId="1" r:id="rId1"/>])
|
||
FWRITE(m.lnF,[</sheets>])
|
||
FWRITE(m.lnF,[</workbook>])
|
||
FCLOSE(m.lnF)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE gen_workbook3 && For comments
|
||
************************************************
|
||
* Generate xl\worksheets\_rels\sheet1.xml.rels *
|
||
************************************************
|
||
LPARAMETERS lcDir
|
||
LOCAL lnF
|
||
lnF = FCREATE(m.lcDir+"sheet1.xml.rels")
|
||
IF m.lnF < 0
|
||
MESSAGEBOX(This.aErrMess[2] + ' sheet1.xml.rels',16,This.aErrMess[1])
|
||
RETURN TO MASTER
|
||
ENDIF
|
||
FWRITE(m.lnF,[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+CHR(10))
|
||
|
||
FWRITE(m.lnF,[<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">])
|
||
FWRITE(m.lnF,[<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="../comments1.xml"/>])
|
||
FWRITE(m.lnF,[<Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" Target="../drawings/vmlDrawing1.vml"/>])
|
||
FWRITE(m.lnF,[</Relationships>])
|
||
FCLOSE(m.lnF)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE getcurr
|
||
LOCAL nretval,LpLCData,cchData,llLeftCurr,lcCurr,lni
|
||
LPARAMETERS lcStrBad
|
||
llLeftCurr = SET("Currency")=="LEFT"
|
||
LpLCData = space(255)
|
||
cchData = LEN(LpLCData)
|
||
IF OS(3)<'6' && Win XP
|
||
nretval = GetLocaleInfo(1024, 0x14, @LpLCData, cchData) && get symbol
|
||
lcCurr = LEFT(ALLTRIM(m.LpLCData) , m.nretval - 1)
|
||
nretval = GetLocaleInfo(1024, 0x1B, @LpLCData, cchData) && get position
|
||
LpLCData = LEFT(ALLTRIM(m.LpLCData) , m.nretval - 1)
|
||
IF m.lcCurr == CHR(128)
|
||
lcCurr = ["€"]
|
||
ELSE
|
||
lcCurr = ["]+This.htmspec(m.lcCurr,m.lcStrBad)+["] && courtesy of Martina Jindrov<6F>
|
||
ENDIF
|
||
ELSE && Win Vista +
|
||
nretval = GetLocaleInfoEx(Null, 0x14, @LpLCData, cchData) && get symbol
|
||
lcCurr = ["]
|
||
FOR lni = 1 TO m.nretval - 1
|
||
lcCurr = m.lcCurr + [&#x] + RIGHT(TRANSFORM(ASC(SUBSTR(m.LpLCData,2*m.lni)),"@0"),2) + RIGHT(TRANSFORM(ASC(SUBSTR(m.LpLCData,2*m.lni - 1)),"@0"),2) + [;]
|
||
NEXT
|
||
lcCurr = m.lcCurr + ["]
|
||
|
||
nretval = GetLocaleInfoEx(Null, 0x1B, @LpLCData, cchData) && get position
|
||
LpLCData = LEFT(m.LpLCData,1)
|
||
ENDIF
|
||
DO CASE
|
||
CASE LpLCData = "0"
|
||
lcCurr = m.lcCurr + [#,##0.00]
|
||
CASE LpLCData = "1"
|
||
lcCurr = [#,##0.00] + m.lcCurr
|
||
CASE LpLCData = "2"
|
||
lcCurr = m.lcCurr + [\ #,##0.00]
|
||
CASE LpLCData = "3"
|
||
lcCurr = [#,##0.00\ ] + m.lcCurr
|
||
ENDCASE
|
||
RETURN m.lcCurr
|
||
ENDPROC
|
||
|
||
PROCEDURE htmspec
|
||
**********************
|
||
* Special characters *
|
||
**********************
|
||
LPARAMETERS cStr,lcStrBad
|
||
LOCAL lni,lcStrF,lcChar,lnChar,lcStrF2
|
||
lcStrF = m.cStr
|
||
IF AT(CHR(38),m.lcStrF)>0
|
||
lcStrF = STRTRAN(m.lcStrF,CHR(38),'&')
|
||
ENDIF
|
||
IF AT('>',m.lcStrF)>0
|
||
lcStrF = STRTRAN(m.lcStrF,'>','>')
|
||
ENDIF
|
||
IF AT('<',m.lcStrF)>0
|
||
lcStrF = STRTRAN(m.lcStrF,'<','<')
|
||
ENDIF
|
||
IF AT('"',m.lcStrF)>0
|
||
lcStrF = STRTRAN(m.lcStrF,'"','"')
|
||
ENDIF
|
||
IF AT("'",m.lcStrF)>0
|
||
lcStrF = STRTRAN(m.lcStrF,"'",''')
|
||
ENDIF
|
||
|
||
* suggested by Koen Piller
|
||
lcStrF2 = STRCONV(CHRTRAN(m.lcStrF,m.lcStrBad,''),9)
|
||
|
||
|
||
*!* lcStrF2 = ''
|
||
*!* FOR lni=1 TO LEN(m.lcStrF)
|
||
*!* lcChar = SUBSTR(m.lcStrF,m.lni,1)
|
||
*!* lnChar = ASC(m.lcChar)
|
||
*!* * lcStrF2 = m.lcStrF2 + IIF(m.lnChar < 128 , m.lcChar , [&#]+STR(m.lnChar,3)+[;])
|
||
*!* lcStrF2 = m.lcStrF2 + IIF(m.lnChar < 128, IIF(m.lnChar > 31 OR INLIST(m.lnChar, 9, 10, 13) , m.lcChar, []), [&#]+STR(m.lnChar,3)+[;])
|
||
*!* NEXT
|
||
RETURN m.lcStrF2
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE langset
|
||
DO CASE
|
||
CASE UPPER(This.LangId) = "EN"
|
||
This.aErrMess[1] = "Abort"
|
||
This.aErrMess[2] = "Cannot create"
|
||
This.aErrMess[3] = "No xlsx generated"
|
||
This.aErrMess[4] = "Nothing to export"
|
||
This.aErrMess[5] = "Not a cursor/table name"
|
||
This.aErrMess[6] = "already exist."
|
||
This.aErrMess[7] = "Overwrite?"
|
||
* thanks to Koen Piller
|
||
CASE UPPER(This.LangId) = "NL"
|
||
This.aErrMess[1] = "Sluiten"
|
||
This.aErrMess[2] = "Niet te maken:"
|
||
This.aErrMess[3] = "Geen xlsx gemaakt"
|
||
This.aErrMess[4] = "Niets te exporteren"
|
||
This.aErrMess[5] = "Geen cursor- of tabelnaam"
|
||
This.aErrMess[6] = "bestaat al."
|
||
This.aErrMess[7] = "Overschrijven?"
|
||
CASE UPPER(This.LangId) = "ES"
|
||
This.aErrMess[1] = "Abortar"
|
||
This.aErrMess[2] = "No se puede crear"
|
||
This.aErrMess[3] = "Ning<6E>n xlsx generado"
|
||
This.aErrMess[4] = "Nada que exportar"
|
||
This.aErrMess[5] = "No es un nombre de cursor/tabla"
|
||
This.aErrMess[6] = "ya existe."
|
||
This.aErrMess[7] = "<22>Sobreescribir?"
|
||
CASE UPPER(This.LangId) = "RO"
|
||
This.aErrMess[1] = "Abandon"
|
||
This.aErrMess[2] = "Nu se poate crea"
|
||
This.aErrMess[3] = "Nu s-a generat xlsx"
|
||
This.aErrMess[4] = "Nimic de exportat"
|
||
This.aErrMess[5] = "Nume invalid de cursor/tabel"
|
||
This.aErrMess[6] = "exista deja."
|
||
This.aErrMess[7] = "Suprascrieti?"
|
||
ENDCASE
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE RightClick
|
||
LOCAL ofrm
|
||
ofrm = CREATEOBJECT("propxlsx",This)
|
||
ofrm.show(1)
|
||
ENDPROC
|
||
|
||
PROTECTED PROCEDURE testprop
|
||
LOCAL lni
|
||
************
|
||
IF VARTYPE(This.lHead) <> "L"
|
||
This.lHead = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.nMaxIndexLen) $ "NFYBI"
|
||
This.nMaxIndexLen = INT(This.nMaxIndexLen)
|
||
ELSE
|
||
This.nMaxIndexLen = 60
|
||
ENDIF
|
||
This.nMaxIndexLen = MIN(MAX(This.nMaxIndexLen,19),120)
|
||
|
||
IF VARTYPE(This.cFields)<> "C"
|
||
This.cFields = ""
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.cfieldstotal)<> "C"
|
||
This.cfieldstotal = ""
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.cheaders)<> "C"
|
||
This.cheaders = ""
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.autocolw)<> "L"
|
||
This.autocolw = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.lMemoAsComment)<> "L"
|
||
This.lMemoAsCommen = .F.
|
||
ENDIF
|
||
************
|
||
IF VARTYPE(This.headbackcolor) <> "N"
|
||
This.headbackcolor = -1
|
||
ELSE
|
||
IF !BETWEEN(This.headbackcolor,-1,RGB(255,255,255))
|
||
This.headbackcolor = -1
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.headfill) <> "L"
|
||
This.headfill = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.headFontBold) <> "L"
|
||
This.headFontBold = .T.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.headFontItalic) <> "L"
|
||
This.headFontItalic = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.HeadFontName) <> "C"
|
||
This.HeadFontName = ""
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.Headfontsize) <>"N"
|
||
This.Headfontsize = 0
|
||
ELSE
|
||
IF This.Headfontsize < 0
|
||
This.Headfontsize = 0
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.headforecolor) <> "N"
|
||
This.headforecolor = -1
|
||
ELSE
|
||
IF !BETWEEN(This.headforecolor,-1,RGB(255,255,255))
|
||
This.headforecolor = -1
|
||
ENDIF
|
||
ENDIF
|
||
************
|
||
IF VARTYPE(This.rowbackcolor) <> "N"
|
||
This.rowbackcolor = -1
|
||
ELSE
|
||
IF !BETWEEN(This.rowbackcolor,-1,RGB(255,255,255))
|
||
This.rowbackcolor = -1
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.rowfill) <> "L"
|
||
This.rowfill = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.rowFontBold) <> "L"
|
||
This.rowFontBold = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.rowFontItalic) <> "L"
|
||
This.rowFontItalic = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.rowFontName) <> "C"
|
||
This.rowFontName = ""
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.rowfontsize) <>"N"
|
||
This.rowfontsize = 0
|
||
ELSE
|
||
IF This.rowfontsize < 0
|
||
This.rowfontsize = 0
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.rowforecolor) <> "N"
|
||
This.rowforecolor = -1
|
||
ELSE
|
||
IF !BETWEEN(This.rowforecolor,-1,RGB(255,255,255))
|
||
This.rowforecolor = -1
|
||
ENDIF
|
||
ENDIF
|
||
************
|
||
IF VARTYPE(This.sheetFirstCol)<>"C"
|
||
This.sheetFirstCol = "A"
|
||
ELSE
|
||
This.sheetFirstCol = UPPER(ALLTRIM(This.sheetFirstCol))
|
||
IF EMPTY(This.sheetFirstCol) OR ;
|
||
LEN(This.sheetFirstCol) > LEN(This.LastCol) OR ;
|
||
LEN(This.sheetFirstCol) = LEN(This.LastCol) AND This.sheetFirstCol > This.LastCol
|
||
This.sheetFirstCol = "A"
|
||
ELSE
|
||
FOR lni = 1 TO LEN(This.sheetFirstCol)
|
||
IF !ISALPHA(This.sheetFirstCol)
|
||
This.sheetFirstCol = "A"
|
||
EXIT
|
||
ENDIF
|
||
NEXT
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.sheetFirstRow) <> "N"
|
||
This.sheetFirstRow = 1
|
||
ELSE
|
||
IF !BETWEEN(This.sheetFirstRow,1,This.LastRow)
|
||
This.sheetFirstRow = 1
|
||
ELSE
|
||
This.sheetFirstRow = FLOOR(This.sheetFirstRow)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.sheetname)<>"C"
|
||
This.sheetname = "sheet1"
|
||
ELSE
|
||
This.sheetname = CHRTRAN(This.sheetname,"[]'","")
|
||
IF EMPTY(This.sheetname)
|
||
This.sheetname = "sheet1"
|
||
ENDIF
|
||
ENDIF
|
||
************
|
||
IF VARTYPE(This.lOpen) <> "L"
|
||
This.lOpen = .F.
|
||
ENDIF
|
||
|
||
IF VARTYPE(This.nCodePage) <> "N"
|
||
This.nCodePage = 0
|
||
ELSE
|
||
IF !INLIST(This.nCodePage,437,620,737,850,852,857,861,865,866,874,895,932,936,949,950,1250,1251,1252,1253,1254,1255,1256)
|
||
This.nCodePage = 0
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE thefirsttime
|
||
LOCAL lcField,lcField2,loCOl,oObj,lnFields,laFields[1],lnFFields,laFFields[1],lnHead,laHead[1],lni,lnPos
|
||
IF VARTYPE(This.grid)="O"
|
||
IF This.lFirst
|
||
This.cFields = ""
|
||
This.cHeaders = ""
|
||
FOR lni = 1 TO This.grid.ColumnCount
|
||
loCol = This.grid.Columns[m.lni]
|
||
IF !loCol.Visible
|
||
LOOP
|
||
ENDIF
|
||
FOR EACH m.oObj IN m.loCol.Objects
|
||
IF m.oObj.BaseClass="Header"
|
||
This.cHeaders = This.cHeaders + m.oObj.Caption + ","
|
||
EXIT
|
||
ENDIF
|
||
NEXT
|
||
|
||
lcField = m.loCol.ControlSource
|
||
lcField2 = IIF(RAT(".",m.lcField)=0,m.lcField,SUBSTR(m.lcField,RAT(".",m.lcField)+1))
|
||
This.cFields = This.cFields + m.lcField2 + ","
|
||
NEXT
|
||
This.cHeaders = RTRIM(This.cHeaders,1,',')
|
||
This.cFields = RTRIM(This.cFields,1,',')
|
||
This.lFirst = .F.
|
||
ENDIF
|
||
ELSE
|
||
IF This.lFirst
|
||
lnFields = AFIELDS(laFields,This.grid)
|
||
DO CASE
|
||
CASE EMPTY(This.cFields) AND EMPTY(This.cHeaders)
|
||
This.cFields = ""
|
||
This.cHeaders = ""
|
||
FOR lni = 1 TO m.lnFields
|
||
This.cFields = This.cFields + laFields[m.lni,1] + ","
|
||
This.cHeaders = This.cHeaders + laFields[m.lni,1] + ","
|
||
NEXT
|
||
This.cFields = RTRIM(This.cFields ,1,',')
|
||
This.cHeaders = RTRIM(This.cHeaders ,1,',')
|
||
CASE !EMPTY(This.cFields) AND EMPTY(This.cHeaders)
|
||
lnFFields = ALINES(laFFields,This.cFields,1+4,",")
|
||
This.cHeaders = ""
|
||
FOR lni = 1 TO m.lnFields
|
||
IF ASCAN(laFFields,laFields[m.lni,1],1,-1,-1,1+2+4) > 0
|
||
This.cHeaders = This.cHeaders + laFields[m.lni,1] + ","
|
||
ELSE
|
||
This.cHeaders = This.cHeaders + ","
|
||
ENDIF
|
||
NEXT
|
||
This.cHeaders = LEFT(This.cHeaders, LEN(This.cHeaders) -1)
|
||
CASE !EMPTY(This.cFields) AND !EMPTY(This.cHeaders)
|
||
lnFFields = ALINES(laFFields,This.cFields,1+4,",")
|
||
lnHead = ALINES(laHead,This.cHeaders,4,",")
|
||
This.cHeaders = ""
|
||
FOR lni = 1 TO m.lnFields
|
||
lnPos = ASCAN(laFFields,laFields[m.lni,1],1,-1,-1,1+2+4)
|
||
IF m.lnPos > 0 AND m.lnPos <= m.lnHead
|
||
This.cHeaders = This.cHeaders + laHead[m.lnPos] + ","
|
||
ELSE
|
||
This.cHeaders = This.cHeaders + ","
|
||
ENDIF
|
||
NEXT
|
||
This.cHeaders = LEFT(This.cHeaders, LEN(This.cHeaders) -1)
|
||
OTHERWISE
|
||
lnHead = ALINES(laHead,This.cHeaders,2,",")
|
||
This.cHeaders = ""
|
||
This.cFields = ""
|
||
FOR lni = 1 TO m.lnFields
|
||
This.cFields = This.cFields + laFields[m.lni,1] + ","
|
||
IF m.lni > 0 AND m.lni <= m.lnHead
|
||
This.cHeaders = This.cHeaders + laHead[m.lni] + ","
|
||
ELSE
|
||
This.cHeaders = This.cHeaders + ","
|
||
ENDIF
|
||
NEXT
|
||
This.cFields = RTRIM(This.cFields ,1,',')
|
||
This.cHeaders = RTRIM(This.cHeaders ,1,',')
|
||
ENDCASE
|
||
This.lFirst = .F.
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
ENDDEFINE
|
||
|
||
DEFINE CLASS propxlsx AS form
|
||
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
|
||
|
||
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
||
*< OBJECTDATA: ObjPath="Pageframe1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.chkBold" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.chkItalic" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.lstFont" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.txtSize" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.lblSize" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.lblFore" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.cmdFore" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.cmdBack" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.chkHead" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page1.chkBack" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.lstFont" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.txtSize" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.cmdFore" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.cmdBack" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.chkMemoAsComment" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.chkBold" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.chkItalic" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.lblSize" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.lblFore" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page2.chkBack" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.Grid1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.Grid1.Column1.Header1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.Grid1.Column1.Text1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.Grid1.Column2.Header1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.Grid1.Column2.Text1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.Grid1.Column3.Header1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.Grid1.Column3.Text1" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.lblBlack" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.lblRed" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page3.chkautocolw" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page4.lblName" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page4.txtName" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page4.lblFirst" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="Pageframe1.Page4.txtFirst" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="cmdOK" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="cmdCancel" UniqueID="" Timestamp="" />
|
||
|
||
*<DefinedPropArrayMethod>
|
||
*m: langset
|
||
*p: autocolw
|
||
*p: ccols
|
||
*p: headbackcolor
|
||
*p: headfill
|
||
*p: headfontbold
|
||
*p: headfontitalic
|
||
*p: headfontname
|
||
*p: headfontsize
|
||
*p: headforecolor
|
||
*p: langid
|
||
*p: lhead
|
||
*p: lmemoascomment
|
||
*p: oobj
|
||
*p: rowbackcolor
|
||
*p: rowfill
|
||
*p: rowfontbold
|
||
*p: rowfontitalic
|
||
*p: rowfontname
|
||
*p: rowfontsize
|
||
*p: rowforecolor
|
||
*p: sheetfirstcol
|
||
*p: sheetfirstrow
|
||
*p: sheetname
|
||
*a: afonth[1,0]
|
||
*a: afontr[1,0]
|
||
*</DefinedPropArrayMethod>
|
||
|
||
*<PropValue>
|
||
AutoCenter = .T.
|
||
autocolw = .F.
|
||
BorderStyle = 2
|
||
Caption = "Settings"
|
||
ccols = (SYS(2015))
|
||
ControlBox = .F.
|
||
DoCreate = .T.
|
||
HalfHeightCaption = .T.
|
||
headbackcolor = (rgb(255,255,255))
|
||
headfill = .F.
|
||
headfontbold = .T.
|
||
headfontitalic = .F.
|
||
headfontname = Calibri
|
||
headfontsize = 11
|
||
headforecolor = 0
|
||
Height = 300
|
||
langid = RO
|
||
lhead = .T.
|
||
lmemoascomment = .F.
|
||
Name = "propxlsx"
|
||
oobj = 0
|
||
rowbackcolor = (rgb(255,255,255))
|
||
rowfill = .F.
|
||
rowfontbold = .F.
|
||
rowfontitalic = .F.
|
||
rowfontname = Calibri
|
||
rowfontsize = 11
|
||
rowforecolor = 0
|
||
sheetfirstcol = A
|
||
sheetfirstrow = 1
|
||
sheetname = Sheet1
|
||
ShowTips = .T.
|
||
Width = 252
|
||
WindowType = 1
|
||
*</PropValue>
|
||
|
||
ADD OBJECT 'cmdCancel' AS commandbutton WITH ;
|
||
Cancel = .T., ;
|
||
Caption = "Cancel", ;
|
||
Height = 27, ;
|
||
Left = 144, ;
|
||
Name = "cmdCancel", ;
|
||
Top = 268, ;
|
||
Width = 84
|
||
*< END OBJECT: BaseClass="commandbutton" />
|
||
|
||
ADD OBJECT 'cmdOK' AS commandbutton WITH ;
|
||
Caption = "OK", ;
|
||
Default = .T., ;
|
||
Height = 27, ;
|
||
Left = 24, ;
|
||
Name = "cmdOK", ;
|
||
Top = 268, ;
|
||
Width = 84
|
||
*< END OBJECT: BaseClass="commandbutton" />
|
||
|
||
ADD OBJECT 'Pageframe1' AS pageframe WITH ;
|
||
ErasePage = .T., ;
|
||
Height = 265, ;
|
||
Left = 0, ;
|
||
Name = "Pageframe1", ;
|
||
PageCount = 4, ;
|
||
Top = 0, ;
|
||
Width = 253, ;
|
||
Page1.Caption = "Header", ;
|
||
Page1.Name = "Page1", ;
|
||
Page2.Caption = "Rows", ;
|
||
Page2.Name = "Page2", ;
|
||
Page3.Caption = "Columns", ;
|
||
Page3.Name = "Page3", ;
|
||
Page4.Caption = "Sheet", ;
|
||
Page4.Name = "Page4"
|
||
*< END OBJECT: BaseClass="pageframe" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.chkBack' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
BackStyle = 0, ;
|
||
Caption = "BackColor", ;
|
||
ControlSource = "ThisForm.HeadFill", ;
|
||
Height = 33, ;
|
||
Left = 119, ;
|
||
Name = "chkBack", ;
|
||
TabIndex = 27, ;
|
||
Top = 151, ;
|
||
Value = .F., ;
|
||
Width = 75, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.chkBold' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
BackStyle = 0, ;
|
||
Caption = "Bold", ;
|
||
ControlSource = "ThisForm.Headfontbold", ;
|
||
Height = 41, ;
|
||
Left = 131, ;
|
||
Name = "chkBold", ;
|
||
TabIndex = 15, ;
|
||
Top = 57, ;
|
||
Value = .T., ;
|
||
Width = 54, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.chkHead' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
AutoSize = .T., ;
|
||
BackStyle = 0, ;
|
||
Caption = "Export headers", ;
|
||
ControlSource = "ThisForm.lHead", ;
|
||
Height = 17, ;
|
||
Left = 11, ;
|
||
Name = "chkHead", ;
|
||
TabIndex = 2, ;
|
||
Top = 10, ;
|
||
Value = .T., ;
|
||
Width = 101
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.chkItalic' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
BackStyle = 0, ;
|
||
Caption = "Italic", ;
|
||
ControlSource = "ThisForm.Headfontitalic", ;
|
||
Height = 41, ;
|
||
Left = 191, ;
|
||
Name = "chkItalic", ;
|
||
TabIndex = 20, ;
|
||
Top = 57, ;
|
||
Value = .F., ;
|
||
Width = 51, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.cmdBack' AS commandbutton WITH ;
|
||
Caption = "", ;
|
||
Height = 27, ;
|
||
Left = 202, ;
|
||
Name = "cmdBack", ;
|
||
TabIndex = 30, ;
|
||
Themes = .F., ;
|
||
Top = 154, ;
|
||
Width = 27
|
||
*< END OBJECT: BaseClass="commandbutton" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.cmdFore' AS commandbutton WITH ;
|
||
Caption = "", ;
|
||
Height = 27, ;
|
||
Left = 202, ;
|
||
Name = "cmdFore", ;
|
||
TabIndex = 25, ;
|
||
Themes = .F., ;
|
||
Top = 108, ;
|
||
Width = 27
|
||
*< END OBJECT: BaseClass="commandbutton" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.lblFore' AS label WITH ;
|
||
BackStyle = 0, ;
|
||
Caption = "Forecolor", ;
|
||
Height = 33, ;
|
||
Left = 131, ;
|
||
Name = "lblFore", ;
|
||
Top = 108, ;
|
||
Width = 65, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.lblSize' AS label WITH ;
|
||
BackStyle = 0, ;
|
||
Caption = "Size", ;
|
||
Height = 39, ;
|
||
Left = 131, ;
|
||
Name = "lblSize", ;
|
||
Top = 11, ;
|
||
Width = 37, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.lstFont' AS listbox WITH ;
|
||
Height = 194, ;
|
||
Left = 11, ;
|
||
Name = "lstFont", ;
|
||
TabIndex = 5, ;
|
||
Top = 32, ;
|
||
Width = 100
|
||
*< END OBJECT: BaseClass="listbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page1.txtSize' AS textbox WITH ;
|
||
Alignment = 3, ;
|
||
Comment = "K", ;
|
||
ControlSource = "ThisForm.Headfontsize", ;
|
||
Height = 23, ;
|
||
Left = 175, ;
|
||
Name = "txtSize", ;
|
||
TabIndex = 10, ;
|
||
Top = 8, ;
|
||
Value = 11, ;
|
||
Width = 64
|
||
*< END OBJECT: BaseClass="textbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.chkBack' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
BackStyle = 0, ;
|
||
Caption = "BackColor", ;
|
||
ControlSource = "ThisForm.HeadFill", ;
|
||
Height = 33, ;
|
||
Left = 119, ;
|
||
Name = "chkBack", ;
|
||
TabIndex = 27, ;
|
||
Top = 151, ;
|
||
Value = .F., ;
|
||
Width = 75, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.chkBold' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
BackStyle = 0, ;
|
||
Caption = "Bold", ;
|
||
ControlSource = "ThisForm.Headfontbold", ;
|
||
Height = 41, ;
|
||
Left = 131, ;
|
||
Name = "chkBold", ;
|
||
TabIndex = 15, ;
|
||
Top = 57, ;
|
||
Value = .T., ;
|
||
Width = 54, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.chkItalic' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
BackStyle = 0, ;
|
||
Caption = "Italic", ;
|
||
ControlSource = "ThisForm.Headfontitalic", ;
|
||
Height = 41, ;
|
||
Left = 191, ;
|
||
Name = "chkItalic", ;
|
||
TabIndex = 20, ;
|
||
Top = 57, ;
|
||
Value = .F., ;
|
||
Width = 51, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.chkMemoAsComment' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
BackStyle = 0, ;
|
||
Caption = "Memo=>comments", ;
|
||
ControlSource = "ThisForm.lMemoAsComment", ;
|
||
Height = 35, ;
|
||
Left = 119, ;
|
||
Name = "chkMemoAsComment", ;
|
||
TabIndex = 20, ;
|
||
ToolTipText = "When checked, Memo fields are placed into comments of a cell that contain the word MEMO", ;
|
||
Top = 195, ;
|
||
Value = .F., ;
|
||
Width = 125, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.cmdBack' AS commandbutton WITH ;
|
||
Caption = "", ;
|
||
Height = 27, ;
|
||
Left = 202, ;
|
||
Name = "cmdBack", ;
|
||
TabIndex = 30, ;
|
||
Themes = .F., ;
|
||
Top = 154, ;
|
||
Width = 27
|
||
*< END OBJECT: BaseClass="commandbutton" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.cmdFore' AS commandbutton WITH ;
|
||
Caption = "", ;
|
||
Height = 27, ;
|
||
Left = 202, ;
|
||
Name = "cmdFore", ;
|
||
TabIndex = 25, ;
|
||
Themes = .F., ;
|
||
Top = 108, ;
|
||
Width = 27
|
||
*< END OBJECT: BaseClass="commandbutton" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.lblFore' AS label WITH ;
|
||
BackStyle = 0, ;
|
||
Caption = "Forecolor", ;
|
||
Height = 33, ;
|
||
Left = 131, ;
|
||
Name = "lblFore", ;
|
||
Top = 108, ;
|
||
Width = 65, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.lblSize' AS label WITH ;
|
||
BackStyle = 0, ;
|
||
Caption = "Size", ;
|
||
Height = 39, ;
|
||
Left = 131, ;
|
||
Name = "lblSize", ;
|
||
Top = 11, ;
|
||
Width = 37, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.lstFont' AS listbox WITH ;
|
||
Height = 218, ;
|
||
Left = 11, ;
|
||
Name = "lstFont", ;
|
||
TabIndex = 5, ;
|
||
Top = 8, ;
|
||
Width = 100
|
||
*< END OBJECT: BaseClass="listbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page2.txtSize' AS textbox WITH ;
|
||
Alignment = 3, ;
|
||
Comment = "K", ;
|
||
ControlSource = "ThisForm.Rowfontsize", ;
|
||
Height = 23, ;
|
||
Left = 175, ;
|
||
Name = "txtSize", ;
|
||
TabIndex = 10, ;
|
||
Top = 8, ;
|
||
Value = 11, ;
|
||
Width = 64
|
||
*< END OBJECT: BaseClass="textbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.chkautocolw' AS checkbox WITH ;
|
||
Alignment = 0, ;
|
||
AutoSize = .T., ;
|
||
BackStyle = 0, ;
|
||
Caption = "Auto column width", ;
|
||
ControlSource = "ThisForm.autocolw", ;
|
||
Height = 17, ;
|
||
Left = 11, ;
|
||
Name = "chkautocolw", ;
|
||
Top = 212, ;
|
||
Value = .F., ;
|
||
Width = 118
|
||
*< END OBJECT: BaseClass="checkbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.Grid1' AS grid WITH ;
|
||
AllowAddNew = .T., ;
|
||
AllowHeaderSizing = .F., ;
|
||
AllowRowSizing = .F., ;
|
||
ColumnCount = 3, ;
|
||
DeleteMark = .F., ;
|
||
GridLines = 2, ;
|
||
Height = 180, ;
|
||
Left = -1, ;
|
||
Name = "Grid1", ;
|
||
Panel = 1, ;
|
||
RecordMark = .F., ;
|
||
RecordSource = (ThisForm.cCols), ;
|
||
ScrollBars = 2, ;
|
||
Top = 8, ;
|
||
Width = 248, ;
|
||
Column1.Name = "Column1", ;
|
||
Column1.ToolTipText = "Field name", ;
|
||
Column2.Name = "Column2", ;
|
||
Column2.ToolTipText = "Column header in XLSX", ;
|
||
Column2.Width = 115, ;
|
||
Column3.Name = "Column3", ;
|
||
Column3.ToolTipText = ("T - this column is included in XLSX" + CHR(13) + "Click to switch between T and F"), ;
|
||
Column3.Width = 35
|
||
*< END OBJECT: BaseClass="grid" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.Grid1.Column1.Header1' AS header WITH ;
|
||
Caption = "Name", ;
|
||
Name = "Header1", ;
|
||
ToolTipText = "Field name"
|
||
*< END OBJECT: BaseClass="header" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.Grid1.Column1.Text1' AS textbox WITH ;
|
||
BackColor = 255,255,255, ;
|
||
BorderStyle = 0, ;
|
||
ForeColor = 0,0,0, ;
|
||
Margin = 0, ;
|
||
Name = "Text1", ;
|
||
ToolTipText = "Field name"
|
||
*< END OBJECT: BaseClass="textbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.Grid1.Column2.Header1' AS header WITH ;
|
||
Caption = "Caption", ;
|
||
Name = "Header1", ;
|
||
ToolTipText = "Column header in XLSX"
|
||
*< END OBJECT: BaseClass="header" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.Grid1.Column2.Text1' AS textbox WITH ;
|
||
BackColor = 255,255,255, ;
|
||
BorderStyle = 0, ;
|
||
ForeColor = 0,0,0, ;
|
||
Margin = 0, ;
|
||
Name = "Text1", ;
|
||
ToolTipText = "Column header in XLSX"
|
||
*< END OBJECT: BaseClass="textbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.Grid1.Column3.Header1' AS header WITH ;
|
||
Caption = "Export", ;
|
||
Name = "Header1", ;
|
||
ToolTipText = ("T - this column is included in XLSX" + CHR(13) + "Click to switch between T and F")
|
||
*< END OBJECT: BaseClass="header" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.Grid1.Column3.Text1' AS textbox WITH ;
|
||
BackColor = 255,255,255, ;
|
||
BorderStyle = 0, ;
|
||
ForeColor = 0,0,0, ;
|
||
Margin = 0, ;
|
||
Name = "Text1", ;
|
||
ToolTipText = ("T - this column is included in XLSX" + CHR(13) + "Click to switch between T and F")
|
||
*< END OBJECT: BaseClass="textbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.lblBlack' AS label WITH ;
|
||
AutoSize = .T., ;
|
||
BackStyle = 0, ;
|
||
Caption = "Right click - Default", ;
|
||
Height = 17, ;
|
||
Left = 57, ;
|
||
Name = "lblBlack", ;
|
||
Top = 188, ;
|
||
Width = 107
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page3.lblRed' AS label WITH ;
|
||
AutoSize = .T., ;
|
||
BackStyle = 0, ;
|
||
Caption = "Click", ;
|
||
ForeColor = 255,0,0, ;
|
||
Height = 17, ;
|
||
Left = 191, ;
|
||
Name = "lblRed", ;
|
||
Top = 188, ;
|
||
Width = 29
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page4.lblFirst' AS label WITH ;
|
||
BackStyle = 0, ;
|
||
Caption = "First cell", ;
|
||
Height = 71, ;
|
||
Left = 11, ;
|
||
Name = "lblFirst", ;
|
||
ToolTipText = "The adress of top-left cell", ;
|
||
Top = 74, ;
|
||
Width = 48, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page4.lblName' AS label WITH ;
|
||
BackStyle = 0, ;
|
||
Caption = "Name", ;
|
||
Height = 44, ;
|
||
Left = 11, ;
|
||
Name = "lblName", ;
|
||
ToolTipText = "The name of the worksheet", ;
|
||
Top = 11, ;
|
||
Width = 47, ;
|
||
WordWrap = .T.
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page4.txtFirst' AS textbox WITH ;
|
||
Format = "!KT", ;
|
||
Height = 23, ;
|
||
Left = 70, ;
|
||
Name = "txtFirst", ;
|
||
ToolTipText = "The adress of top-left cell", ;
|
||
Top = 71, ;
|
||
Value = A1, ;
|
||
Width = 100
|
||
*< END OBJECT: BaseClass="textbox" />
|
||
|
||
ADD OBJECT 'Pageframe1.Page4.txtName' AS textbox WITH ;
|
||
ControlSource = "ThisForm.SheetName", ;
|
||
Format = "KT", ;
|
||
Height = 23, ;
|
||
Left = 70, ;
|
||
Name = "txtName", ;
|
||
ToolTipText = "The name of the worksheet", ;
|
||
Top = 8, ;
|
||
Value = sheet1, ;
|
||
Width = 100
|
||
*< END OBJECT: BaseClass="textbox" />
|
||
|
||
PROCEDURE Init
|
||
LPARAMETERS toObj
|
||
LOCAL lnFont,laFont[1],loCol,lnCol,laCol[1],lnFCol,lafCol[1],lnHead,laHead[1],lcField,lcField2,llExcluded,oObj,lcHDefa,lcHCapt,lni
|
||
This.oObj = m.toObj
|
||
|
||
IF VARTYPE(This.oObj.grid) = "O" && grid
|
||
IF !USED(This.oObj.grid.RecordSource)
|
||
RETURN
|
||
ENDIF
|
||
ENDIF
|
||
|
||
This.Top = OBJTOCLIENT(This.oObj,1)+10
|
||
This.Left = OBJTOCLIENT(This.oObj,2)+10
|
||
|
||
This.langId = This.oObj.langId
|
||
This.LangSet
|
||
|
||
This.lHead = This.oObj.lHead
|
||
This.HeadBackColor = IIF(BETWEEN(This.oObj.HeadBackColor,0,RGB(255,255,255)) , This.oObj.HeadBackColor , RGB(255,255,255))
|
||
This.Headforecolor = IIF(BETWEEN(This.oObj.Headforecolor,0,RGB(255,255,255)) , This.oObj.Headforecolor , 0)
|
||
This.Headfontbold = This.oObj.Headfontbold
|
||
This.Headfontitalic = This.oObj.Headfontitalic
|
||
This.Headfontname = IIF(!EMPTY(This.oObj.Headfontname) , This.oObj.Headfontname , "Calibri")
|
||
This.Headfontsize = IIF(This.oObj.Headfontsize > 0 , This.oObj.Headfontsize , 11)
|
||
This.pageframe1.page1.chkBack.Value = This.oObj.HeadFill
|
||
This.HeadFill = This.oObj.HeadFill
|
||
|
||
This.rowBackColor = IIF(BETWEEN(This.oObj.rowBackColor,0,RGB(255,255,255)) , This.oObj.rowBackColor , RGB(255,255,255))
|
||
This.rowforecolor = IIF(BETWEEN(This.oObj.rowforecolor,0,RGB(255,255,255)) , This.oObj.rowforecolor , 0)
|
||
This.rowfontbold = This.oObj.rowfontbold
|
||
This.rowfontitalic = This.oObj.rowfontitalic
|
||
This.rowfontname = IIF(!EMPTY(This.oObj.rowfontname) , This.oObj.rowfontname , "Calibri")
|
||
This.rowfontsize = IIF(This.oObj.rowfontsize > 0 , This.oObj.rowfontsize , 11)
|
||
This.pageframe1.page2.txtSize.Value = This.rowfontsize
|
||
This.pageframe1.page2.chkBack.Value = This.oObj.RowFill
|
||
This.RowFill = This.oObj.RowFill
|
||
This.lMemoAsComment = This.oObj.lMemoAsComment
|
||
This.pageframe1.page2.chkMemoAsComment.Value = This.lMemoAsComment
|
||
|
||
This.pageframe1.page1.cmdback.BackColor = This.HeadBackColor
|
||
This.pageframe1.page1.CmdFore.BackColor = This.Headforecolor
|
||
|
||
This.pageframe1.page2.cmdback.BackColor = This.rowBackColor
|
||
This.pageframe1.page2.CmdFore.BackColor = This.rowforecolor
|
||
|
||
AFONT(laFont)
|
||
DIMENSION This.aFonth[ALEN(m.laFont)]
|
||
ACOPY(m.laFont,This.aFonth)
|
||
This.pageframe1.page1.lstFont.RowSourceType = 5
|
||
This.pageframe1.page1.lstFont.RowSource = "ThisForm.aFonth"
|
||
lnFont = ASCAN(This.aFonth,This.Headfontname,1,-1,-1,1+2+4)
|
||
IF m.lnFont > 0
|
||
This.pageframe1.page1.lstFont.ListIndex = m.lnFont
|
||
ELSE
|
||
lnFont = ASCAN(This.aFonth,'Calibri',1,-1,-1,1+2+4)
|
||
IF m.lnFont > 0
|
||
This.pageframe1.page1.lstFont.ListIndex = m.lnFont
|
||
ELSE
|
||
This.pageframe1.page1.lstFont.ListIndex = 1
|
||
ENDIF
|
||
ENDIF
|
||
|
||
DIMENSION This.aFontr[ALEN(m.laFont)]
|
||
ACOPY(m.laFont,This.aFontr)
|
||
This.pageframe1.page2.lstFont.RowSourceType = 5
|
||
This.pageframe1.page2.lstFont.RowSource = "ThisForm.aFontr"
|
||
lnFont = ASCAN(This.aFontr,This.Rowfontname,1,-1,-1,1+2+4)
|
||
IF m.lnFont > 0
|
||
This.pageframe1.page2.lstFont.ListIndex = m.lnFont
|
||
ELSE
|
||
lnFont = ASCAN(This.aFontr,'Calibri',1,-1,-1,1+2+4)
|
||
IF m.lnFont > 0
|
||
This.pageframe1.page2.lstFont.ListIndex = m.lnFont
|
||
ELSE
|
||
This.pageframe1.page2.lstFont.ListIndex = 1
|
||
ENDIF
|
||
ENDIF
|
||
|
||
This.oObj.Thefirsttime
|
||
This.cCols = SYS(2015)
|
||
CREATE CURSOR (This.cCols) (iPos I,cFName V(254),cHCaption C(254),cHDefault V(254),lToExport L)
|
||
IF EMPTY(This.oObj.cfields)
|
||
lnCol = 0
|
||
ELSE
|
||
lnCol = ALINES(laCol,This.oObj.cfields,1+4,',')
|
||
ENDIF
|
||
IF EMPTY(This.oObj.cheaders)
|
||
lnHead = 0
|
||
ELSE
|
||
lnHead = ALINES(laHead,This.oObj.cheaders,1+2,',')
|
||
ENDIF
|
||
IF VARTYPE(This.oObj.grid) = "O" && grid
|
||
FOR lni = 1 TO This.oObj.grid.ColumnCount
|
||
loCol = This.oObj.grid.Columns[m.lni]
|
||
IF loCol.Visible
|
||
lcField = loCol.ControlSource
|
||
lcField2 = IIF(RAT(".",m.lcField)=0,m.lcField,SUBSTR(m.lcField,RAT(".",m.lcField)+1))
|
||
llExcluded = ASCAN(laCol,m.lcField2,1,-1,-1,1+2+4) = 0
|
||
FOR EACH oObj IN loCol.Objects
|
||
IF oObj.BaseClass="Header"
|
||
lcHDefa = oObj.Caption
|
||
EXIT
|
||
ENDIF
|
||
NEXT
|
||
IF !m.llExcluded
|
||
lcHCapt = laHead[m.lni]
|
||
ELSE
|
||
lcHCapt = m.lcHDefa
|
||
ENDIF
|
||
INSERT INTO (This.cCols) VALUES (m.lni,m.lcField2,m.lcHCapt,m.lcHDefa,!m.llExcluded)
|
||
ENDIF
|
||
NEXT
|
||
ELSE
|
||
lnFCol = AFIELDS(laFCol,This.oObj.grid)
|
||
FOR lni = 1 TO m.lnFCol
|
||
lcField2 = m.laFCol[m.lni,1]
|
||
lcHDefa = m.laFCol[m.lni,1]
|
||
llExcluded = ASCAN(laCol,m.lcField2,1,-1,-1,1+2+4) = 0
|
||
IF !m.llExcluded
|
||
lcHCapt = laHead[m.lni]
|
||
ELSE
|
||
lcHCapt = m.lcHDefa
|
||
ENDIF
|
||
INSERT INTO (This.cCols) VALUES (m.lni,m.lcField2,m.lcHCapt,m.lcHDefa,!m.llExcluded)
|
||
NEXT
|
||
ENDIF
|
||
GO TOP IN (This.cCols)
|
||
|
||
This.pageframe1.Page3.grid1.RecordSource = This.cCols
|
||
This.pageframe1.Page3.grid1.Column1.ControlSource = This.cCols + ".cFName"
|
||
This.pageframe1.Page3.grid1.Column1.ReadOnly = .T.
|
||
This.pageframe1.Page3.grid1.Column2.ControlSource = This.cCols + ".cHCaption"
|
||
This.pageframe1.Page3.grid1.Column3.ControlSource = This.cCols + ".lToExport"
|
||
This.pageframe1.Page3.grid1.SetAll("DynamicBackColor", "IIF(" + This.cCols + ".lToExport,RGB(255,255,255),RGB(255,200,200))", "Column")
|
||
|
||
IF VARTYPE(ThisForm.oObj.autocolw)<>"L"
|
||
This.pageframe1.page3.chkautocolw.Value = .F.
|
||
This.autocolw = .F.
|
||
ELSE
|
||
This.pageframe1.page3.chkautocolw.Value = This.oObj.autocolw
|
||
This.autocolw = This.oObj.autocolw
|
||
ENDIF
|
||
|
||
IF VARTYPE(ThisForm.oObj.sheetFirstCol)<>"C"
|
||
ThisForm.sheetFirstCol = "A"
|
||
ELSE
|
||
IF EMPTY(ThisForm.oObj.sheetFirstCol) OR ;
|
||
LEN(ThisForm.oObj.sheetFirstCol) > LEN(ThisForm.oObj.LastCol) OR ;
|
||
LEN(ThisForm.oObj.sheetFirstCol) = LEN(ThisForm.oObj.LastCol) AND ThisForm.oObj.sheetFirstCol > ThisForm.oObj.LastCol
|
||
ThisForm.sheetFirstCol = "A"
|
||
ELSE
|
||
FOR lni = 1 TO LEN(ALLTRIM(ThisForm.oObj.sheetFirstCol))
|
||
IF !ISALPHA(SUBSTR(ALLTRIM(ThisForm.oObj.sheetFirstCol),m.lni,1))
|
||
ThisForm.sheetFirstCol = "A"
|
||
EXIT
|
||
ENDIF
|
||
NEXT
|
||
ThisForm.sheetFirstCol = UPPER(ALLTRIM(ThisForm.oObj.sheetFirstCol))
|
||
ENDIF
|
||
ENDIF
|
||
IF VARTYPE(ThisForm.oObj.sheetFirstRow) <> "N"
|
||
ThisForm.sheetFirstRow = 1
|
||
ELSE
|
||
IF !BETWEEN(ThisForm.oObj.sheetFirstRow,1,ThisForm.oObj.LastRow)
|
||
ThisForm.sheetFirstRow = 1
|
||
ELSE
|
||
ThisForm.sheetFirstRow = FLOOR(ThisForm.oObj.sheetFirstRow)
|
||
ENDIF
|
||
ENDIF
|
||
This.pageframe1.page4.txtFirst.Value = ThisForm.sheetFirstCol + TRANSFORM(ThisForm.sheetFirstRow)
|
||
|
||
IF VARTYPE(ThisForm.oObj.sheetname)<>"C"
|
||
This.pageframe1.page4.txtName.Value = "sheet1"
|
||
ThisForm.sheetname = "sheet1"
|
||
ELSE
|
||
IF EMPTY(CHRTRAN(ThisForm.oObj.sheetname,"[]'",""))
|
||
This.pageframe1.page4.txtName.Value = "sheet1"
|
||
ThisForm.sheetname = "sheet1"
|
||
ELSE
|
||
This.pageframe1.page4.txtName.Value = CHRTRAN(ThisForm.oObj.sheetname,"[]'","")
|
||
ThisForm.sheetname = CHRTRAN(ThisForm.oObj.sheetname,"[]'","")
|
||
ENDIF
|
||
ENDIF
|
||
|
||
FOR EACH loCol IN ThisForm.pageframe1.Page3.grid1.Columns
|
||
BINDEVENT(m.loCol,"MouseMove",ThisForm.pageframe1.Page3.grid1,"MouseMove")
|
||
BINDEVENT(m.loCol.Header1,"MouseMove",ThisForm.pageframe1.Page3.grid1,"MouseMove")
|
||
BINDEVENT(m.loCol.Text1,"MouseMove",ThisForm.pageframe1.Page3.grid1,"MouseMove")
|
||
BINDEVENT(m.loCol,"MouseEnter",ThisForm.pageframe1.Page3.grid1,"MouseMove")
|
||
BINDEVENT(m.loCol.Header1,"MouseEnter",ThisForm.pageframe1.Page3.grid1,"MouseMove")
|
||
BINDEVENT(m.loCol.Text1,"MouseEnter",ThisForm.pageframe1.Page3.grid1,"MouseMove")
|
||
BINDEVENT(m.loCol,"MouseLeave",ThisForm.pageframe1.Page3.grid1,"MouseLeave")
|
||
BINDEVENT(m.loCol.Header1,"MouseLeave",ThisForm.pageframe1.Page3.grid1,"MouseLeave")
|
||
BINDEVENT(m.loCol.Text1,"MouseLeave",ThisForm.pageframe1.Page3.grid1,"MouseLeave")
|
||
NEXT
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE langset
|
||
DO CASE
|
||
CASE UPPER(This.LangId) = "EN"
|
||
This.cmdOK.Caption = "OK"
|
||
This.cmdCancel.Caption = "Cancel"
|
||
WITH This.pageframe1
|
||
WITH .page1
|
||
.Caption = "Header"
|
||
.chkHead.Caption = "Export headers"
|
||
.lblSize.Caption = "Size"
|
||
.chkBold.Caption = "Bold"
|
||
.chkItalic.Caption = "Italic"
|
||
.lblFore.Caption = "Forecolor"
|
||
.chkBack.Caption = "BackColor"
|
||
ENDWITH
|
||
WITH .page2
|
||
.Caption = "Rows"
|
||
.lblSize.Caption = "Size"
|
||
.chkBold.Caption = "Bold"
|
||
.chkItalic.Caption = "Italic"
|
||
.lblFore.Caption = "Forecolor"
|
||
.chkBack.Caption = "BackColor"
|
||
.chkMemoAsComment.Caption = "Memo=>comments"
|
||
.chkMemoAsComment.ToolTipText = "When checked, Memo fields are placed into comments of a cell that contain the word MEMO"
|
||
ENDWITH
|
||
WITH .page3
|
||
.Caption = "Columns"
|
||
WITH .grid1.Column1
|
||
.Header1.Caption = "Name"
|
||
STORE "Field name" TO .ToolTipText, .Header1.ToolTipText, .Text1.ToolTipText
|
||
ENDWITH
|
||
WITH .grid1.Column2
|
||
.Header1.Caption = "Caption"
|
||
STORE "Column header in XLSX" TO .ToolTipText, .Header1.ToolTipText, .Text1.ToolTipText
|
||
ENDWITH
|
||
WITH .grid1.Column3
|
||
.Header1.Caption = "Export"
|
||
STORE "T - this column is included in XLSX" + CHR(13) + "Click to switch between T and F" TO .ToolTipText, .Header1.ToolTipText, .Text1.ToolTipText
|
||
ENDWITH
|
||
.lblBlack.Caption = "Right click - Default"
|
||
.lblRed.Caption = "Click"
|
||
.chkautocolw.Caption = "Auto column width"
|
||
ENDWITH
|
||
WITH .page4
|
||
.Caption = "Sheet"
|
||
.lblName.Caption = "Name"
|
||
STORE "The name of the worksheet" TO .lblName.ToolTipText, .txtName.ToolTipText
|
||
.lblFirst.Caption = "First cell"
|
||
STORE "The adress of top-left cell" TO .lblFirst.ToolTipText, .txtFirst.ToolTipText
|
||
ENDWITH
|
||
ENDWITH
|
||
CASE UPPER(This.LangId) = "RO"
|
||
This.cmdOK.Caption = "Validez"
|
||
This.cmdCancel.Caption = "Renunt"
|
||
WITH This.pageframe1
|
||
WITH .page1
|
||
.Caption = "Antet"
|
||
.chkHead.Caption = "Exporta antete"
|
||
.lblSize.Caption = "Dimen siune"
|
||
.chkBold.Caption = "Aldin"
|
||
.chkItalic.Caption = "Cursiv"
|
||
.lblFore.Caption = "Culoare text"
|
||
.chkBack.Caption = "Culoare fundal"
|
||
ENDWITH
|
||
WITH .page2
|
||
.Caption = "Randuri"
|
||
.lblSize.Caption = "Dimen siune"
|
||
.chkBold.Caption = "Aldin"
|
||
.chkItalic.Caption = "Cursiv"
|
||
.lblFore.Caption = "Culoare text"
|
||
.chkBack.Caption = "Culoare fundal"
|
||
.chkMemoAsComment.Caption = "Memo=>comentarii"
|
||
.chkMemoAsComment.ToolTipText = "Cand e bifat, campurile memo sunt plasate ca si comentarii ale unor celule ce contin cuvantul MEMO"
|
||
ENDWITH
|
||
WITH .page3
|
||
.Caption = "Coloane"
|
||
WITH .grid1.Column1
|
||
.Header1.Caption = "Denumire"
|
||
STORE "Denumirea campului" TO .ToolTipText, .Header1.ToolTipText, .Text1.ToolTipText
|
||
ENDWITH
|
||
WITH .grid1.Column2
|
||
.Header1.Caption = "Eticheta"
|
||
STORE "Antetul coloanei in XLSX" TO .ToolTipText, .Header1.ToolTipText, .Text1.ToolTipText
|
||
ENDWITH
|
||
WITH .grid1.Column3
|
||
.Header1.Caption = "Export"
|
||
STORE "T - aceasta coloana este inclusa in XLSX" + CHR(13) + "Clic pentru a comuta intre T si F" TO .ToolTipText, .Header1.ToolTipText, .Text1.ToolTipText
|
||
ENDWITH
|
||
.lblBlack.Caption = "Clic dreapta - implicit"
|
||
.lblRed.Caption = "Clic"
|
||
.chkautocolw.Caption = "Latimea coloanelor stabilita automat"
|
||
ENDWITH
|
||
WITH .page4
|
||
.Caption = "Foaie"
|
||
.lblName.Caption = "Denu mire"
|
||
STORE "Denumirea foii de calcul" TO .lblName.ToolTipText, .txtName.ToolTipText
|
||
.lblFirst.Caption = "Prima celula"
|
||
STORE "Adresa celulei din coltul stanga-sus" TO .lblFirst.ToolTipText, .txtFirst.ToolTipText
|
||
ENDWITH
|
||
ENDWITH
|
||
ENDCASE
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE cmdCancel.Click
|
||
ThisForm.Release
|
||
ENDPROC
|
||
|
||
PROCEDURE cmdOK.Click
|
||
ThisForm.oObj.lHead = ThisForm.lHead
|
||
ThisForm.oObj.HeadBackColor = ThisForm.HeadBackColor
|
||
ThisForm.oObj.Headforecolor = ThisForm.Headforecolor
|
||
ThisForm.oObj.Headfontbold = ThisForm.Headfontbold
|
||
ThisForm.oObj.Headfontitalic = ThisForm.Headfontitalic
|
||
ThisForm.oObj.Headfontname = ThisForm.Headfontname
|
||
ThisForm.oObj.Headfontsize = ThisForm.Headfontsize
|
||
ThisForm.oObj.HeadFill = ThisForm.HeadFill
|
||
|
||
ThisForm.oObj.rowBackColor = ThisForm.rowBackColor
|
||
ThisForm.oObj.rowforecolor = ThisForm.rowforecolor
|
||
ThisForm.oObj.rowfontbold = ThisForm.rowfontbold
|
||
ThisForm.oObj.rowfontitalic = ThisForm.rowfontitalic
|
||
ThisForm.oObj.rowfontname = ThisForm.rowfontname
|
||
ThisForm.oObj.rowfontsize = ThisForm.rowfontsize
|
||
ThisForm.oObj.rowFill = ThisForm.rowFill
|
||
ThisForm.oObj.lMemoAsComment = ThisForm.lMemoAsComment
|
||
|
||
ThisForm.oObj.cfields = ""
|
||
ThisForm.oObj.cheaders = ""
|
||
SELECT (ThisForm.cCols)
|
||
SCAN
|
||
IF lToExport
|
||
ThisForm.oObj.cfields = ThisForm.oObj.cfields + cFName + ","
|
||
ThisForm.oObj.cheaders = ThisForm.oObj.cheaders + RTRIM(cHCaption) + ","
|
||
ELSE
|
||
ThisForm.oObj.cfields = ThisForm.oObj.cfields + ","
|
||
ThisForm.oObj.cheaders = ThisForm.oObj.cheaders + ","
|
||
ENDIF
|
||
ENDSCAN
|
||
ThisForm.oObj.cfields = LEFT(ThisForm.oObj.cfields,LEN(ThisForm.oObj.cfields) - 1)
|
||
ThisForm.oObj.cheaders = LEFT(ThisForm.oObj.cheaders,LEN(ThisForm.oObj.cheaders) - 1)
|
||
USE IN (ThisForm.cCols)
|
||
ThisForm.oObj.autocolw = ThisForm.autocolw
|
||
|
||
ThisForm.oObj.sheetFirstCol = ThisForm.sheetFirstCol
|
||
ThisForm.oObj.sheetFirstRow = ThisForm.sheetFirstRow
|
||
ThisForm.oObj.sheetname = ThisForm.sheetname
|
||
|
||
ThisForm.Release
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page1.cmdBack.Click
|
||
LOCAL lnColor
|
||
lnColor = GETCOLOR(ThisForm.Headbackcolor)
|
||
IF BETWEEN(m.lnColor,0,RGB(255,255,255))
|
||
ThisForm.Headbackcolor = m.lnColor
|
||
This.BackColor = m.lnColor
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page1.cmdFore.Click
|
||
LOCAL lnColor
|
||
lnColor = GETCOLOR(ThisForm.Headforecolor)
|
||
IF BETWEEN(m.lnColor,0,RGB(255,255,255))
|
||
ThisForm.Headforecolor = m.lnColor
|
||
This.BackColor = m.lnColor
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page1.lstFont.InteractiveChange
|
||
ThisForm.Headfontname=RTRIM(This.Value)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page1.txtSize.RangeLow
|
||
RETURN 1
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page2.cmdBack.Click
|
||
LOCAL lnColor
|
||
lnColor = GETCOLOR(ThisForm.Rowbackcolor)
|
||
IF BETWEEN(m.lnColor,0,RGB(255,255,255))
|
||
ThisForm.Rowbackcolor = m.lnColor
|
||
This.BackColor = m.lnColor
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page2.cmdFore.Click
|
||
LOCAL lnColor
|
||
lnColor = GETCOLOR(ThisForm.Rowforecolor)
|
||
IF BETWEEN(m.lnColor,0,RGB(255,255,255))
|
||
ThisForm.Rowforecolor = m.lnColor
|
||
This.BackColor = m.lnColor
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page2.lstFont.InteractiveChange
|
||
ThisForm.rowfontname=RTRIM(This.Value)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page2.txtSize.RangeLow
|
||
RETURN 1
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page3.Grid1.Column2.Text1.RightClick
|
||
SELECT (ThisForm.cCols)
|
||
replace cHCaption WITH cHDefault
|
||
GO RECNO(ThisForm.cCols) IN (ThisForm.cCols)
|
||
This.Parent.Parent.Refresh
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page3.Grid1.Column3.Text1.Click
|
||
SELECT (ThisForm.cCols)
|
||
replace lToExport WITH !lToExport
|
||
GO RECNO(ThisForm.cCols) IN (ThisForm.cCols)
|
||
This.Parent.Parent.Refresh
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page3.Grid1.MouseLeave
|
||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||
ThisForm.pageframe1.Page3.grid1.ToolTipText = ""
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page3.Grid1.MouseMove
|
||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||
LOCAL nWhere_Out,nRelCol_Out
|
||
ThisForm.pageframe1.Page3.grid1.GridHitTest(m.nXCoord, m.nYCoord, @nWhere_Out,,@nRelCol_Out)
|
||
IF m.nWhere_Out = 1
|
||
ThisForm.pageframe1.Page3.grid1.ToolTipText = ThisForm.pageframe1.Page3.grid1.Columns[m.nRelCol_Out].Header1.ToolTipText
|
||
ELSE
|
||
IF m.nWhere_Out = 3
|
||
ThisForm.pageframe1.Page3.grid1.ToolTipText = ThisForm.pageframe1.Page3.grid1.Columns[m.nRelCol_Out].Text1.ToolTipText
|
||
ENDIF
|
||
ENDIF
|
||
|
||
|
||
WAIT WINDOW m.nWhere_Out NOWAIT
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page4.txtFirst.LostFocus
|
||
LOCAL lni,lcCol,lcRow,lcChar,lcPrev
|
||
lcPrev = ThisForm.sheetFirstCol + TRANSFORM(ThisForm.sheetFirstRow)
|
||
lcCol = LEFT(This.Value,1)
|
||
lcRow = ""
|
||
IF !ISALPHA(m.lcCol)
|
||
This.Value = m.lcPrev
|
||
RETURN
|
||
ENDIF
|
||
FOR lni = 2 TO LEN(This.Value)
|
||
lcChar = SUBSTR(This.Value,m.lni,1)
|
||
DO CASE
|
||
CASE ISDIGIT(m.lcChar)
|
||
lcRow = m.lcRow + m.lcChar
|
||
CASE ISALPHA(m.lcChar) AND EMPTY(m.lcRow) AND LEN(m.lcCol) < LEN(ThisForm.oObj.LastCol)
|
||
lcCol = m.lcCol + m.lcCHar
|
||
OTHERWISE
|
||
This.Value = m.lcPrev
|
||
RETURN
|
||
ENDCASE
|
||
NEXT
|
||
IF LEN(m.lcCol) = LEN(ThisForm.oObj.LastCol) AND m.lcCol > ThisForm.oObj.LastCol
|
||
This.Value = m.lcPrev
|
||
RETURN
|
||
ENDIF
|
||
IF !BETWEEN(VAL(m.lcRow),1,ThisForm.oObj.LastRow)
|
||
This.Value = m.lcPrev
|
||
RETURN
|
||
ENDIF
|
||
|
||
ThisForm.sheetFirstCol = m.lcCol
|
||
ThisForm.sheetFirstRow = VAL(m.lcRow)
|
||
ENDPROC
|
||
|
||
PROCEDURE Pageframe1.Page4.txtName.LostFocus
|
||
This.Value = CHRTRAN(This.Value,"[]'","")
|
||
IF EMPTY(This.Value)
|
||
This.Value = "sheet1"
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
ENDDEFINE
|