有关连接到excel的问题,急....
各位大侠,我通过取ACCESS2000数据库数据导入到pb连接EXCEL生成一,两个SHEET测试报表不觉的什么,但是在实际工作中一次运行生成一套27个SHEET表(程序的运行时间大约为4分钟)或者更多,我才觉得有问题出来了,运行中PB8物理内存在以300k~600k/秒增长,到生成完这27个sheet后.天呀!!!!,PB8占的物理内存占用了130M~140M,excel进程显示物理占了23M左右(在程序运行中变化很少).帮帮我,各位大侠,问题碰过和没碰过的,有想法的和没想法的,都来说两句,指醒我,我出错在哪里.
以下是建立连接(CreateOle函数APP可以打开两个WORKBOOK)
Choose Case Remark
Case "Create"
Integer ConnectErr
MyOLE=Create OLEObject
ConnectErr=MyOLE.ConnectToNewObject ("excel.Application")
MyOLE.visible=false
//打开指定的XLS文件激活workbooks
MyOLE.application.workbooks.Open (FilePath)
//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
MyOLE.Application.DisplayAlerts = False
Case "Model"
//打开指定的XLS文件激活workbooks
MyOlE.Application.WorkBooks.Open (ModelFilePath)
//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
MyOLE.Application.DisplayAlerts = False
Case "Close"
MyOlE.Application.WorkBooks(2).Close
end Choose
if isnull(MyOLE) then return -1 ;
if ConnectErr <0 then
choose case ConnectErr
case -1
messagebox('错误提示','无效的调用')
case -2
messagebox('错误提示','类名没发现')
case -3
messagebox('错误提示','对象不能创建')
case -4
messagebox('错误提示','文件不能连接')
case -5
messagebox('错误提示','不能连接现在的对象')
case -6
messagebox('错误提示','文件无效')
case -7
messagebox("错误提示","文件不存在或已经打开")
case -8
messagebox("错误提示","服务器不能装载选择的文件")
case -9
messagebox("错误提示","其他错误")
end choose
return -1
end if
return 1
以下是建立填数取数
.....
CreateOle(OutReportName,"","Create")
CreateOle=1
RwExcel=Create Read_Write_Excel
......
以下为读CELL数据(模块函数)
analyse_CellPlace(CellPlace,RowCode,ColCode) //分析类似"H20"定位函数
ReturnString=MyOlE.Application.WorkBooks(workbook).Sheets(worksheet).Cells(RowCode,ColCode).value
REturn string(ReturnString)
以下为写cell数据(模块函数)
analyse_CellPlace(CellPlace,RowCode,ColCode) //分析类似"H20"定位函数
MyOlE.Application.WorkBooks(workbook).Sheets(worksheet).Cells(RowCode,ColCode).value=SetCellData
以下为SHEET改名(模块函数)
MyOlE.Application.WorkBooks(workbook).Sheets(olename).select
MyOlE.Application.WorkBooks(workbook).Sheets(olename).name=newname
.......等等模块函数进行组合运行(居中, 保留位数,删除列,行.....)
只有运行以下几句,PB8的运行程序的内存只减一点点,没有什么变化。
MyOLE.Application.quit()
MyOLE.DisConnectObject()
destroy MyOLE
只有退出整个pb8才完全释放内存,我使用的是win2000 pro,pb8.04 build 10501,MDAC2.8,access2000,excel2000,PIII800,256M