OLEOBJECT ExcelServer,Excelbooks
long ll_count ,ll_loop,ll_i,ll_j,ll_cnt,ll_colcount,ll_column,ll_file
Integer ExcelOK
string ls_value,ls_datatype,ls_colname
boolean ib_create //是否要新建sheet
//建立Ole对象
ExcelServer = Create OleObject
Excelbooks = Create OleObject
//连接Excel应用
ExcelOk = ExcelServer.connecttonewobject("excel.application")
//连接失败的处理
IF ExcelOk < 0 THEN
MessageBox("Connect to Excel Failed !",string(ExcelOk))
GOTO ENDED
END IF
//如果文件不存在
IF NOT FileExists(is_path) THEN
//--建一Excel文件
ll_file = fileopen(is_path,StreamMode!,Write!, LockWrite!,Replace!)
fileclose(ll_file)
ib_create = true //新建标志
END IF
//打开Excel工作薄
ExcelServer.Workbooks.Open(is_path)
//获取EXCEL当前工作薄中的第一个工作表
Excelbooks = ExcelServer.Application.ActiveWorkbook.Worksheets[1]
//计算EXCEL当前工作表表范围内的行数
if not ib_create then ll_cnt = long(ExcelServer.ActiveSheet.UsedRange.Rows.Count)
/*往进赋值:*/
//数据窗口列数
ll_column = long(dw_1.Describe("DataWindow.Column.Count"))
//数据窗口行数
ll_count = dw_1.rowcount()
for ll_loop = 1 to ll_count
for ll_colcount = 1 to ll_column
//获取数据窗口列名,目的是取数据
ls_colname = dw_1.describe("#"+string(ll_colcount)+".name")
//根据不同类型采用不同GetItem语句
ls_datatype = dw_1.describe("#"+string(ll_colcount)+".ColType")
choose case left(ls_datatype,4)
case "char"
ls_value = dw_1.getitemstring(ll_loop,ls_colname)
case "long"
ls_value = string(dw_1.getitemnumber(1,ls_colname))
case "deci"
ls_value = string(dw_1.getitemdecimal(1,ls_colname))
case "date"
ls_value = string(dw_1.getitemdatetime(1,ls_colname),"YYYY-MM-DD")
end choose //
//赋值Excel单元格,从ll_cnt(Excel的行数)开始
Excelbooks.Cells(ll_loop + ll_cnt ,ll_colcount).value = ls_value
next
next
/*-----------*/
//使EXCEL可见
ExcelServer.Application.Visible = TRUE
ENDED:
//保存Excel工作薄的记录
ExcelServer.Application.ActiveWorkbook.save()
//关闭保存时的提示
ExcelServer.Displayalerts = FALSE
//关闭当前工作薄
ExcelServer.activeworkbook.close()
//关闭Excel ExcelServer.Application.Quit()
//关闭Ole对象与Excel的连接
ExcelServer.disconnectobject()
//关闭另一个Ole对象
DESTROY Excelbooks