Brian, I was curious if you had an example of how you can setup your spreadsheet directly from UniVerse by treating the content as XML?
Are you physically writing to a .XLS type file from universe but in an XML format? Also, I wouldn't mind looking into OpenXML, that sounds like it may be very useful for our needs here. I appreciate the response. -Chris > From: br...@brianleach.co.uk > To: u2-users@listserver.u2ug.org > Date: Tue, 13 Apr 2010 16:44:31 +0100 > Subject: Re: [U2] import data to excel sheet... > > Chris > > I'm using OpenXML to create spreadsheets in Excel 2007 format: and writing a > series in Spectrum about it. You can create the spreadsheets directly from > UniVerse by treating the content as XML (with a number of caveats) or you > can call out to something external that will build it using the OpenXML SDK > 2.0 or an equivalent toolkit. > > Brian > > -----Original Message----- > From: u2-users-boun...@listserver.u2ug.org > [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Chris Austin > Sent: 13 April 2010 3:48 PM > To: u2-users@listserver.u2ug.org > Subject: Re: [U2] import data to excel sheet... > > > I was curious if there is an easy way to add font formatting to the .CSV > files I have been creating from UniVerse. > Right now we just write to a sequential file and call it <name>.csv and just > use comma's to separate > the data. We then use a carriage return CHAR(13) to return to the next line > in the spreadsheet. > > If I wanted to make a word appear as blue or in bold, how are you guys doing > this? > > Thanks. > > -Chris > > > > Date: Mon, 12 Apr 2010 11:47:20 -0700 > > From: jacque...@yahoo.com > > To: u2-users@listserver.u2ug.org > > Subject: Re: [U2] import data to excel sheet... > > > > Hi Jaweed, > > > > If you already produced a number of files with the CHAR(13) as the end of > line separator, you probably still handle them with excel, if you change the > file extension from .csv to .txt and when you are in Excel import wizard, > specify that the origin of the file is "Macintosh". Since the Mac uses > CHAR(13) as an EOL separator, the import should work. > > > > > > > > > > > > ----- Original Message ---- > > From: Robert Houben <robert.hou...@fwic.net> > > To: U2 Users List <u2-users@listserver.u2ug.org> > > Sent: Mon, April 12, 2010 12:01:03 PM > > Subject: Re: [U2] import data to excel sheet... > > > > Hi Jaweed, > > > > I haven't looked too closely at your code, but I did notice on thing that > I would consider the most likely candidate: > > > > CHAR(13) is a carriage return, not a line feed. Try using CHAR(10) > instead for your LINE.FEED variable. You might have to use > CHAR(13):CHAR(10), but I think CHAR(10) should do it. > > > > Good luck! > > > > -----Original Message----- > > From: u2-users-boun...@listserver.u2ug.org > [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Jaweed > > Sent: Monday, April 12, 2010 7:53 AM > > To: u2-users@listserver.u2ug.org > > Subject: [U2] import data to excel sheet... > > > > Can anyone tell me what is wrong with the following code for importing > data > > from txt file to an excel sheet, when its launch > > > > Excel it giving some error message, but when I open the downloaded file > from > > my disc, all the data is in one line with some especial > > > > Chars. Any help will be appreciated. > > > > > > > > 034: ************** > > > > 035: * OPEN FILES * > > > > 036: ************** > > > > 037: ERRMSG = '' > > > > 038: OPEN TEXT.FILE.NAME TO TEXT.FILE ELSE > > > > 039: ERRMSG = 'CANNOT OPEN THE ' : TEXT.FILE.NAME : ' FILE!' > > > > 040: END > > > > 041: IF ERRMSG THEN > > > > 042: GOSUB 91000 > > > > 043: RETURN > > > > 044: END > > > > *--: P > > > > 045: ************** > > > > 046: * INITIALIZE * > > > > 047: ************** > > > > 048: PAGE.FEED = CHAR(12) > > > > 049: LINE.FEED = CHAR(13) > > > > 050: ;* > > > > 051: ;* Read the text file to convert > > > > 052: ;* > > > > 053: READ TEXT.REC FROM TEXT.FILE, TEXT.REC.NAME ELSE > > > > 054: ERRMSG = "ITEM " : TEXT.REC.NAME : " DOES NOT EXIST IN " : > > TEXT.FILE.NA > > > > ME > > > > 055: GOSUB 91000 > > > > 056: RETURN > > > > 057: END > > > > 058: ;* > > > > 059: ;* Set default values (none are used now) > > > > 060: ;* > > > > 061: VALUE = "DEFAULT" > > > > 062: LOCATE "PROPERTY" IN FORMATSTR<1> SETTING PTR THEN > > > > 063: VALUE = FORMATSTR<2,PTR> > > > > 064: END > > > > 065: ;* > > > > 066: ;* Remove the first line if it contains a PAGE.FEED > > > > *--: P > > > > 067: ;* > > > > 068: LOOP WHILE TEXT.REC<1> = PAGE.FEED DO > > > > 069: TEXT.REC = DELETE(TEXT.REC,1) > > > > 070: REPEAT > > > > 071: IF TEXT.REC<1>[1,1] = PAGE.FEED THEN > > > > 072: TEXT.REC<1> = TEXT.REC<1>[2,LEN(TEXT.REC)] > > > > 073: END > > > > 074: ;* > > > > 075: ;* Find the header for each page > > > > 076: ;* > > > > 077: SLK.REC = '' > > > > 078: SLK.ROWS = 0 > > > > 079: SLK.HEADER.LINES = 0 > > > > 080: IF TEXT.REC<1>[1,10] = "RUN D - T:" THEN > > > > 081: SLK.REC<-1> = "F;SD;R3" > > > > 082: SLK.REC<-1> = "F;SD;R4" > > > > 083: SLK.REC<-1> = "C;Y1;X1;K" : > > QUOTE(TRIM(CHANGE(TEXT.REC<1>[1,30],';',';; > > > > '))) > > > > 084: SLK.REC<-1> = "C;Y2;X1;K" : > > QUOTE(TRIM(CHANGE(TEXT.REC<2>[1,30],';',';; > > > > '))) > > > > 085: SLK.REC<-1> = "C;Y3;X1;K" : > > QUOTE(TRIM(CHANGE(TEXT.REC<1>[31,90],';','; > > > > ;'))) > > > > 086: SLK.REC<-1> = "C;Y4;X1;K" : > > QUOTE(TRIM(CHANGE(TEXT.REC<2>[31,90],';','; > > > > ;'))) > > > > 087: SLK.ROWS = 4 > > > > 088: SLK.HEADER.LINES = 2 > > > > *--: P > > > > 089: END > > > > 090: ;* > > > > 091: ;* Find the number of lines in the header > > > > 092: ;* > > > > 093: LINES = DCOUNT(TEXT.REC,@AM) > > > > 094: SLK.HEADER.CNT = 0 > > > > 095: FOR IDX = SLK.HEADER.LINES+1 TO LINES > > > > 096: IF INDEX(TEXT.REC<IDX>,"---",1) THEN > > > > 097: SLK.HEADER.CNT = IDX > > > > 098: EXIT > > > > 099: END > > > > 100: NEXT IDX > > > > 101: ;* > > > > 102: ;* Find the column locations > > > > 103: ;* > > > > 104: COL.LIST = '' > > > > 105: IF SLK.HEADER.CNT THEN > > > > 106: DASHES.LINE = " " : TEXT.REC<SLK.HEADER.CNT> : " " > > > > 107: DASHES.LINE = TRIM(DASHES.LINE,'-') > > > > 108: DASHES.CNT = COUNT(DASHES.LINE,'-') > > > > 109: DASHES.LINE = TEXT.REC<SLK.HEADER.CNT> > > > > 110: FOR DASHES.IDX = 1 TO DASHES.CNT > > > > *--: P > > > > 111: COL.START = INDEX(DASHES.LINE,'-',1) > > > > 112: DASHES.REMAIN = LEN(DASHES.LINE) - COL.START + 1 > > > > 113: COL.LEN = INDEX(DASHES.LINE[DASHES.REMAIN],' ',1)-1 > > > > 114: IF COL.LEN < 1 THEN COL.LEN = LEN(DASHES.LINE) > > > > 115: COL.LIST<DASHES.IDX,1> = COL.START > > > > 116: COL.LIST<DASHES.IDX,2> = COL.LEN > > > > 117: DASHES.LINE[COL.START,COL.LEN] = SPACE(COL.LEN) > > > > 118: NEXT DASHES.IDX > > > > 119: END > > > > 120: ;* > > > > 121: ;* Extract the column titles > > > > 122: ;* > > > > 123: COL.CNT = DCOUNT(COL.LIST,@AM) > > > > 124: FOR HDR.IDX = SLK.HEADER.LINES+1 TO SLK.HEADER.CNT-1 > > > > 125: SLK.ROWS = SLK.ROWS + 1 > > > > 126: SLK.Y = "Y" : SLK.ROWS : ";" > > > > 127: ;* > > > > 128: ;* Make sure the header properly fits into the column > > > > 129: ;* If it does not, then add it to the spreadsheet's first column > > > > 130: ;* > > > > 131: CHECK.LINE = TEXT.REC<HDR.IDX> > > > > 132: GOSUB CHECK.COLUMNS > > > > *--: P > > > > 133: IF NOT(CHECK.LINE) THEN > > > > 134: SLK.TEXT = TRIM(CHANGE(TEXT.REC<HDR.IDX>,';',';;')) > > > > 135: SLK.REC<-1> = "C;" : SLK.Y : "X1;K" : QUOTE(SLK.TEXT) > > > > 136: CONTINUE > > > > 137: END > > > > 138: ;* > > > > 139: ;* The header fits, so add it to the column names > > > > 140: ;* > > > > 141: IF HDR.IDX = SLK.HEADER.CNT-1 THEN > > > > 142: SLK.REC<-1> = "F;SBD;R" : SLK.ROWS > > > > 143: END ELSE > > > > 144: SLK.REC<-1> = "F;SD;R" : SLK.ROWS > > > > 145: END > > > > 146: FOR COL.IDX = 1 TO COL.CNT > > > > 147: COL.START = COL.LIST<COL.IDX,1> > > > > 148: COL.LEN = COL.LIST<COL.IDX,2> > > > > 149: SLK.X = "X" : COL.IDX : ";" > > > > 150: SLK.TEXT = TEXT.REC<HDR.IDX>[COL.START,COL.LEN] > > > > 151: SLK.TEXT = TRIM(CHANGE(SLK.TEXT,';',';;')) > > > > 152: IF SLK.TEXT # '' THEN > > > > 153: SLK.REC<-1> = "C;" : SLK.Y : SLK.X : "K" : QUOTE(SLK.TEXT) > > > > 154: SLK.Y = '' > > > > *--: P > > > > 155: END > > > > 156: NEXT COL.IDX > > > > 157: NEXT HDR.IDX > > > > 158: ;* > > > > 159: ;* Begin conversion > > > > 160: ;* > > > > 161: LINES = DCOUNT(TEXT.REC,@AM) > > > > 162: FOR IDX = SLK.HEADER.CNT+1 TO LINES > > > > 163: ;* > > > > 164: ;* Check for a pagefeed, otherwise insert the next row of data > > > > 165: ;* > > > > 166: FINDSTR PAGE.FEED IN TEXT.REC<IDX> SETTING NEW.PAGE.MARKER THEN > > > > 167: IDX = IDX + SLK.HEADER.CNT > > > > 168: CONTINUE > > > > 169: END > > > > 170: SLK.ROWS = SLK.ROWS + 1 > > > > 171: SLK.Y = "Y" : SLK.ROWS : ";" > > > > 172: ;* > > > > 173: ;* Make sure the row properly fits into the column > > > > 174: ;* > > > > 175: CHECK.LINE = TEXT.REC<IDX> > > > > 176: GOSUB CHECK.COLUMNS > > > > *--: P > > > > 177: IF NOT(CHECK.LINE) THEN > > > > 178: SLK.TEXT = TRIM(CHANGE(TEXT.REC<IDX>,';',';;')) > > > > 179: SLK.REC<-1> = "C;" : SLK.Y : "X1;K" : QUOTE(SLK.TEXT) > > > > 180: CONTINUE > > > > 181: END > > > > 182: FOR COL.IDX = 1 TO COL.CNT > > > > 183: COL.START = COL.LIST<COL.IDX,1> > > > > 184: COL.LEN = COL.LIST<COL.IDX,2> > > > > 185: SLK.X = "X" : COL.IDX : ";" > > > > 186: SLK.TEXT = TEXT.REC<IDX>[COL.START,COL.LEN] > > > > 187: SLK.TEXT = TRIM(CHANGE(SLK.TEXT,';',';;')) > > > > 188: IF SLK.TEXT # '' THEN > > > > 189: SLK.REC<-1> = "C;" : SLK.Y : SLK.X : "K" : QUOTE(SLK.TEXT) > > > > 190: SLK.Y = '' > > > > 191: END > > > > 192: NEXT COL.IDX > > > > 193: NEXT IDX > > > > 194: ;* > > > > 195: ;* Insert SLK format header into record > > > > 196: ;* > > > > 197: SLK.REC.FMT = 'ID;PPRIMAC' > > > > 198: SLK.REC.FMT<-1> = 'P;ECourier' > > > > *--: P > > > > 199: SLK.REC.FMT<-1> = 'P;ECourier;SB' > > > > 200: SLK.REC.FMT<-1> = 'B;Y' : SLK.ROWS : ';X' : COL.CNT > > > > 201: FOR COL.IDX = 1 TO COL.CNT > > > > 202: COL.LEN = COL.LIST<COL.IDX,2> > > > > 203: SLK.REC.FMT<-1> = 'F;W' : COL.IDX : ' ' : COL.IDX : ' ' : > COL.LEN+1 > > > > 204: NEXT COL.IDX > > > > 205: SLK.REC = SLK.REC.FMT : @AM : SLK.REC : @AM : "E" > > > > 206: ;* > > > > 207: ;* Write SLK record > > > > 208: ;* > > > > 209: SLK.REC.PATH = "./":TEXT.FILE.NAME:"/":TEXT.REC.NAME:".slk" > > > > 210: SWAP @AM WITH LINE.FEED IN SLK.REC > > > > 211: OSWRITE SLK.REC ON SLK.REC.PATH > > > > 212: RETURN > > > > 213: * > > > > 214: CHECK.COLUMNS: > > > > 215: FOR CHECK.IDX = 1 TO COL.CNT > > > > 216: CHECK.START = COL.LIST<CHECK.IDX,1> > > > > 217: CHECK.LEN = COL.LIST<CHECK.IDX,2> > > > > 218: CHECK.LINE[CHECK.START,CHECK.LEN] = SPACE(CHECK.LEN) > > > > 219: NEXT CHECK.IDX > > > > 220: IF TRIM(CHECK.LINE) = '' THEN > > > > *--: P > > > > 221: CHECK.LINE = 1 > > > > 222: END ELSE > > > > 223: CHECK.LINE = 0 > > > > 224: END > > > > 225: RETURN > > > > 226: ******************** > > > > 227: * CALLS FOR SYSCOM * > > > > 228: ******************** > > > > 229: 91000* > > > > 230: ERR.TYPE = 1 ; CALL SYSCOM(MAT SYSCOM.REC) > > > > 231: RETURN > > > > 232: * > > > > 233: 99999 * > > > > 234: RETURN > > > > 235: END > > > > Bottom. > > > > _______________________________________________ > > U2-Users mailing list > > U2-Users@listserver.u2ug.org > > http://listserver.u2ug.org/mailman/listinfo/u2-users > > _______________________________________________ > > U2-Users mailing list > > U2-Users@listserver.u2ug.org > > http://listserver.u2ug.org/mailman/listinfo/u2-users > > > > > > > > > > _______________________________________________ > > U2-Users mailing list > > U2-Users@listserver.u2ug.org > > http://listserver.u2ug.org/mailman/listinfo/u2-users > > _________________________________________________________________ > Hotmail is redefining busy with tools for the New Busy. Get more from your > inbox. > http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:W > L:en-US:WM_HMP:042010_2 > _______________________________________________ > U2-Users mailing list > U2-Users@listserver.u2ug.org > http://listserver.u2ug.org/mailman/listinfo/u2-users > No virus found in this incoming message. > Checked by AVG - www.avg.com > Version: 9.0.801 / Virus Database: 271.1.1/2807 - Release Date: 04/12/10 > 19:32:00 > > _______________________________________________ > U2-Users mailing list > U2-Users@listserver.u2ug.org > http://listserver.u2ug.org/mailman/listinfo/u2-users _________________________________________________________________ The New Busy is not the too busy. Combine all your e-mail accounts with Hotmail. http://www.windowslive.com/campaign/thenewbusy?tile=multiaccount&ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_4 _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users