I've used the NebulaXlite -- it's good -- has a learning curve - but once
you get the rhythm it makes getting a 'pretty' spreadsheet put together not
that tough. I have a customer that uses it weekly to produce what was a
problem as a "CSV" file just because of the 'perception' that it should look
'pretty'. The data is just as 'right' as ever, but now has more credibility!

 
-----Original Message-----
From: u2-users-boun...@listserver.u2ug.org
[mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Chris Austin
Sent: Tuesday, April 13, 2010 11:15 AM
To: u2-users@listserver.u2ug.org
Subject: Re: [U2] import data to excel sheet...


That program actually seems perfect for what I'm looking to do Bill. Do you
guys
use this at your work? Is it a decent product?

-Chris


> Date: Tue, 13 Apr 2010 09:11:25 -0700
> From: wphask...@advantos.net
> To: U2-users@listserver.u2ug.org
> Subject: Re: [U2] import data to excel sheet...
> 
> Chris:
> 
> You may want to simplify your life and pick up NebulaXLite.
> 
> http://nebula-rnd.com/products/xlite.htm
> 
> HTH,
> 
> Bill
> 
> >
> > ------------------------------------------------------------------------
> > Chris Austin said the following on 4/13/2010 7:48 AM:
> >> 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
> >>   
> _______________________________________________
> U2-Users mailing list
> U2-Users@listserver.u2ug.org
> http://listserver.u2ug.org/mailman/listinfo/u2-users
                                          
_________________________________________________________________
The New Busy is not the old busy. Search, chat and e-mail from your inbox.
http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:W
L:en-US:WM_HMP:042010_3
_______________________________________________
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

Reply via email to