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