LANSA Integrator: ExcelService - adding cellstyle for the sheet which is created using template
Posted: Tue Jun 06, 2023 11:56 am
Hi all,
The customer wants to do the followings.
- create the excel using template (template.xlsx)
- adding cellstyles
cellstyle details:
- Set background color and font for odd-numbered rows
- left align for 5th column
However when adding cellstyles, the cell style which is set in template is lost.
Is there any ways to just add the styles for cells? (= not replacing)
The test program and the screenshots are attached.
RDMLX:
Thanks in advance.
Best regards, Yukiko Ikeo
The customer wants to do the followings.
- create the excel using template (template.xlsx)
- adding cellstyles
cellstyle details:
- Set background color and font for odd-numbered rows
- left align for 5th column
However when adding cellstyles, the cell style which is set in template is lost.
Is there any ways to just add the styles for cells? (= not replacing)
The test program and the screenshots are attached.
RDMLX:
Code: Select all
Function Options(*DIRECT)
*
Define Field(#JSMXCMD) Reffld(#STD_NVARC)
Define Field(#JSMXMSG) Reffld(#STD_NVARC)
Define Field(#JSMXHDLE) Type(*CHAR) Length(4)
Define Field(#JSMXSTS) Type(*NVARCHAR) Length(20)
Define Field(#DUMMYC01) Type(*CHAR) Length(1) Desc(DUMMY) Default(*BLANK)
Define Field(#DUMMYC02) Type(*CHAR) Length(1) Desc(DUMMY) Default(*BLANK)
Define Field(#DUMMYC03) Type(*CHAR) Length(1) Desc(DUMMY) Default(*BLANK)
Define Field(#DUMMYC04) Type(*CHAR) Length(1) Desc(DUMMY) Default(*BLANK)
Define Field(#PRDID) Type(*CHAR) Length(10)
Define Field(#PRDNME) Type(*CHAR) Length(20)
Define Field(#PRDAMT) Type(*DEC) Length(10) Decimals(2)
Define Field(#COUNT) Type(*DEC) Length(5) Decimals(0)
Define Field(#COUNT7S) Type(*DEC) Length(5) Decimals(0)
Define Field(#INT) Reffld(#STD_NUM)
Def_List Name(#SWSTFDPFList) Fields(#DUMMYC01 #DUMMYC02 #DUMMYC03 #DUMMYC04 #PRDID #PRDNME #PRDAMT) Type(*WORKING)
Def_List Name(#SWSTFDPFList_WR1) Fields(#DUMMYC01 #DUMMYC02 #DUMMYC03 #DUMMYC04 #PRDID #PRDNME #PRDAMT) Type(*WORKING)
* Initial processing
Clr_List Named(#SWSTFDPFList)
Begin_Loop Using(#COUNT) To(10)
#PRDID := 'ID' + #COUNT.AsString
#PRDNME := 'Product' + #COUNT.AsString
#PRDAMT := 2000.45 + #COUNT
Add_Entry To_List(#SWSTFDPFList)
End_Loop
*
* JSMX_BEGIN
*
Use Builtin(JSMX_BEGIN)
*
* JSMX_OPEN
*
#JSMXCMD := 'OPEN'
Use Builtin(JSMX_OPEN) To_Get(#JSMXSTS #JSMXMSG #JSMXHDLE)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
*
* SERVICE_LOAD
*
#JSMXCMD := 'SERVICE_LOAD SERVICE(ExcelService) TRACE(*YES)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
*
* CREATE
*
#JSMXCMD := 'CREATE USING(template.xlsx)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
#COUNT7S := 4
Selectlist Named(#SWSTFDPFLIST)
#INT := #COUNT7S.mod( 2 )
* Style set to the 5th column of the current row => Left-aligned
#JSMXCMD := 'ADD OBJECT(*CELLSTYLE) SHEET(Sheet1) COLUMN(5) RANGE(' + (#COUNT7S).AsString + ',' + (#COUNT7S).AsString + ') HALIGN(*LEFT) VALIGN(*CENTER)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
* Odd numbered lines => Background: White, Font: MS Gothic
If Cond(#INT *NE 0)
#JSMXCMD := 'ADD OBJECT(*CELLSTYLE) SHEET(Sheet1) COLUMN(1,7) RANGE(' + (#COUNT7S).AsString + ',' + (#COUNT7S).AsString + ') BACKGROUND(*WHITE) FONT(MS Gothic) VALIGN(*CENTER)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
Endif
Clr_List Named(#SWSTFDPFList_WR1)
Add_Entry To_List(#SWSTFDPFList_WR1)
#JSMXCMD := 'WRITE R1C1(' + (#COUNT7S).AsString + ',1)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG #SWSTFDPFList_WR1)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
#COUNT7S := #COUNT7S + 1
Endselect
*
* SAVE FILE
*
#JSMXCMD := 'SAVE FILE(CheckList.xlsx)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
*
* CLOSE
*
#JSMXCMD := 'CLOSE'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
*
* SERVICE_UNLOAD
*
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE 'SERVICE_UNLOAD') To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
*
* JSMX_CLOSE
*
Use Builtin(JSMX_CLOSE) With_Args(#JSMXHDLE) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
*
* JSMX_END
*
Use Builtin(JSMX_END)
*
* SUB ROUTINES
*
Subroutine Name(CHECK) Parms((#JSMXSTS *RECEIVED) (#JSMXMSG *RECEIVED))
*
If Cond('#JSMXSTS *NE OK')
*
Use Builtin(JSMX_CLOSE) With_Args(#JSMXHDLE) To_Get(#JSMXSTS #JSMXMSG)
*
* Menu Msgtxt(#JSMXCMD)
Endif
Endroutine
Best regards, Yukiko Ikeo