PB 数据窗口数据导入Excel, 如果存在则追加,不存在则创建。

本文档介绍如何使用PB将数据窗口数据导入Excel,如果Excel表格已存在,则追加数据;若不存在,则创建新的Excel文件并写入数据。通过OleObject连接Excel应用程序,检查文件是否存在,然后遍历数据窗口中的每一行和每一列,根据数据类型转换数据并写入Excel单元格,最后保存并关闭Excel工作簿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值