我的是在10.0上运行的
F_PB2EXCEL() RETURN INTEGER
ADW_NAME DATAWINDOW
AS_TITLE STRING
俩个参数如上:
OLEOBJECT OLE_OBJECT
OLE_OBJECT=CREATE OLEOBJECT
INTEGER LI_RET
LI_RET=OLE_OBJECT.CONNECTTOOBJECT("","EXCEL.APPLICATION")
IF LI_RET<>0 THEN
LI_RET=OLE_OBJECT.CONNECTTONEWOBJECT("EXCEL.APPLICATION")
IF LI_RET<>0 THEN
MESSAGEBOX('OLE ERROR!','OLE COULD NOT CONNECT '+STRING(LI_RET))
RETURN 0
END IF
OLE_OBJECT.VISIBLE=TRUE
END IF
POINTER OLDPOINTER
OLDPOINTER=SETPOINTER(HOURGLASS!)
OLE_OBJECT.APPLICATION.WORKBOOKS.ADD()
LONG LL_COLUMNCOUNT,LL_ROWCOUNT
STRING LS_OBJECT,LS_OBJ,LS_OBJS[],LS_OBJTAG[],LS_WIDTH[],S_ENGLISH
STRING LS_VALUE,LS_COLUMN_NAME,LS_COLTYPE
INT LI_POS,LI_I,LL_C,LL_R
LONG LL_NUM=1,LL_ROW=1
DECIMAL LD_WIDTH
LONG LL_COLUMN,ROW
STRING COLUMN_NAME
S_ENGLISH='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
LL_ROWCOUNT=ADW.ROWCOUNT()
LL_COLUMNCOUNT=LONG(ADW.OBJECT.DATAWINDOW.COLUMN.COUNT)
FOR LI_I=1 TO LL_COLUMNCOUNT
IF ADW.DESCRIBE('#'+STRING(LI_I)+'.VISIBLE')="1" THEN
LS_COLUMN_NAME=ADW.DESCRIBE('#'+STRING(LI_I)+".NAME")
LS_OBJS[LL_NUM]=ADW.DESCRIBE('#'+STRING(LI_I)+".NAME")
LS_OBJTAG[LL_NUM]=ADW.DESCRIBE(LS_COLUMN_NAME+"_T.TEXT")
LS_WIDTH[LL_NUM]=ADW.DESCRIBE(LS_COLUMN_NAME+".WIDTH")
LL_NUM++
END IF
NEXT
LL_COLUMN=UPPERBOUND(LS_OBJS)
IF TRIM(TITLE)<>' ' THEN
OLE_OBJECT.CELLS[1,1].VALUE=TITLE
OLE_OBJECT.RANGE('A1').FONT.SIZE=18
OLE_OBJECT.RANGE('A1').FONT.NAME='宋体'
OLE_OBJECT.RANGE('A1').HORIZONTALALIGNMENT=3
OLE_OBJECT.RANGE('A1:'+MID(S_ENGLISH,LL_COLUMN,1)+'1').MERGE
END IF
FOR LI_I=1 TO LL_COLUMN
LS_VALUE=LS_OBJTAG[LI_I]
COLUMN_NAME=LS_OBJS[LI_I]
OLE_OBJECT.CELLS[2,LI_I].VALUE=LS_VALUE
IF ISNULL(LS_WIDTH[LI_I]) THEN
LD_WIDTH=12
ELSE
LD_WIDTH=DEC(LS_WIDTH[LI_I])/35
END IF
IF POS(UPPER(ADW.DESCRIBE(COLUMN_NAME+'.COLTYPE')),'CHAR')>0 THEN
OLE_OBJECT.COLUMNS(LI_I).NUMBERFORMAT='@'
OLE_OBJECT.COLUMNS(LI_I).COLUMNWIDTH=LD_WIDTH
ELSEIF POS(UPPER(ADW.DESCRIBE(COLUMN_NAME+'.COLTYPE')),'DATETIME')>0 THEN
OLE_OBJECT.COLUMNS(LI_I).NUMBERFORMAT='YYYY/MM/DD'
OLE_OBJECT.COLUMNS(LI_I).COLUMNWIDTH=10
ELSEIF POS(UPPER(ADW.DESCRIBE(COLUMN_NAME+'.COLTYPE')),'DECIMAL')>0 THEN
STRING LS_FORMAT
LS_FORMAT=ADW.DESCRIBE(COLUMN_NAME+'EDITMASK.MASK')
OLE_OBJECT.COLUMNS(LI_I).COLUMNFORMAT=LS_FORMAT
OLE_OBJECT.COLUMNS(LI_I).COLUMNWIDTH=LD_WIDTH
END IF
OLE_OBJECT.COLUMNS(LI_I).HORIZONTALALIGNMENT=3
OLE_OBJECT.COLUMNS(LI_I).BORDERS.LINESTYLE=1
OLE_OBJECT.COLUMNS(LI_I).FONT.SIZE=16
OLE_OBJECT.COLUMNS(LI_I).FONT.BOLD=TRUE
NEXT
ROW=3
FOR LL_R=1 TO LL_ROWCOUNT
FOR LL_C=1 TO LL_COLUMNCOUNT
COLUMN_NAME=LS_OBJS[LL_C]
IF ADW.DESCRIBE(COLUMN_NAME+'.TYPE')='column' THEN
LS_VALUE=ADW.DESCRIBE("EVALUATE('LOOKUPDISPLAY("+COLUMN_NAME+")',"+STRING(LL_R)+")")
END IF
IF ADW.DESCRIBE(COLUMN_NAME+'.TYPE')='compute' THEN
LS_VALUE=ADW.DESCRIBE("EVALUATE('"+ADW.DESCRIBE(COLUMN_NAME+&
'.EXPRESSION')+"',"+STRING(LL_R)+")")
END IF
IF ISNULL(LS_VALUE) OR LS_VALUE='!' OR LS_VALUE='?' THEN
LS_VALUE=''
END IF
LONG A
A=LONG(ADW.DESCRIBE(COLUMN_NAME+'ALIGNMENT'))
IF A=0 THEN
A=2
ELSEIF A=1 THEN
A=4
ELSEIF A=2 THEN
A=3
END IF
OLE_OBJECT.CELLS[ROW,LL_C].HORIZONTALALIGNMENT=A
OLE_OBJECT.CELLS[ROW,LL_C].FONT.SIZE=9
OLE_OBJECT.CELLS[ROW,LL_C].FONT.BOLD=FALSE
OLE_OBJECT.CELLS[ROW,LL_C].VALUE=LS_VALUE
NEXT
ROW++
NEXT
SETPOINTER(OLDPOINTER)
INT LI_RETURN
STRING LS_DOCNAME,LS_NAMED
INTEGER LI_VALUE
LI_VALUE=GETFILESAVENAME("选择保存文件!",&
+LS_DOCNAME,LS_NAMED,"EXCEL文件",+"EXCEL文件(.XLS),*.XLS")
IF LI_VALUE<>1 THEN RETURN 0
OLE_OBJECT.WORKBOOKS(1).SAVEAS(LS_DOCNAME)
MESSAGEBOX('提示!','文件保存成功!'+&
'~R~N文件为:'+LS_DOCNAME)
OLE_OBJECT.WORKBOOKS(1).CLOSE
OLE_OBJECT.APPLICATION.QUIT
OLE_OBJECT.DISCONNECTOBJECT()
DESTROY OLE_OBJECT;
RETURN 1