将DW数据窗口导出为EXCEL文件的方法(整理)

2025江苏职教高考计算机真题解析:Word、Excel、PS、DW核心考点与实战技巧 办公软件与设计工具是现代职场与计算机教育的核心技能,其底层原理在于通过标准化的软件界面与功能模块,高效处理文档、数据与多媒体信息。掌握这些工具不仅能提升个人工作效率,更在数据分析、图文排版、网页设计与图像处理等广泛场景中创造直接价值。本文聚焦于实战应用,针对Word高级排版中的表格框线修改、Excel多条件筛选与函数应用等高频操作难点,结合具体真题案例,系统拆解了从环境准备到分步操作的全流程。通过解析这些典型任务,旨在帮助读者构建标准化的解题思路,有效应对技能考核与实际工作中的复杂需求。 阅读详情

本文为摘自优快云论坛帖子收集整理后汇总版本:

---2004年9月3日整理

---原贴见:

http://community.youkuaiyun.com/Expert/topic/3328/3328715.xml?temp=8.050799E-04

鉴于现在很多朋友询问 pb 数据导出到excel 中的问题,导出去后格式和数据
类型不对了,自己写了几个用户对象,
希望能抛砖引玉,加强技术交流,得到大家的支持。

1. nvo_excel 只要是两个接口函数
导出数据存储的数据,可以定义 excel 的标题
public function integer uf_toexcel (datastore ads_data, readonly string as_title)

导出数据窗口的数据,可以定义 excel 的标题
public function integer uf_toexcel (datawindow adw_data, readonly string as_title)

2. 下面是两个用户对象的 sru 文件,自己导入到工程中
$PBExportHeader$uo_ds_base.sru
$PBExportComments$数据存储基类
forward
global type uo_ds_base from datastore
end type
end forward

global type uo_ds_base from datastore
string dataobject = "d_expression"
end type
global uo_ds_base uo_ds_base

forward prototypes
public function any uf_getitemvalue (long al_row, string as_colname)
public function string uf_about ()
public function string uf_globalreplace (string as_source, string as_old, string as_new)
end prototypes

public function any uf_getitemvalue (long al_row, string as_colname);
//*************************************************//
//function : 得到任意的列的值
//parm     :
//         1. al_row       : 指定行
//         2. as_colname   : 指定列的列名
//return   : -1 is fail or success is value to you
//author   : hzh
//date     : 2002.11.05
//************************************************//

 

String s_tempcoltype
any a_ret
s_tempcoltype = Lower(THIS.Describe(as_colname + ".coltype"))

//for string type
IF Left(s_tempcoltype,4) = "char" OR Left(s_tempcoltype,4) ="varc"then
 a_ret = THIS.GetItemString(al_row,as_colname)
END IF 

//for decimal type
IF Left(s_tempcoltype,7) = "decimal" then
 a_ret = THIS.GetItemDecimal(al_row,as_colname)
END IF

//for date type
IF s_tempcoltype = "date" THEN
 a_ret = THIS.GetItemDate(al_row,as_colname)
END IF

 //for datetime type
IF s_tempcoltype = "datetime" THEN
 a_ret = THIS.GetItemDateTime(al_row,as_colname)
END IF

//for number type
IF s_tempcoltype = "number" THEN
 a_ret = THIS.GetItemNumber(al_row,as_colname)
END IF

//for time type
IF s_tempcoltype = "time" THEN
 a_ret = THIS.GetItemTime(al_row,as_colname)
END IF

//for timestamp type
IF s_tempcoltype = "timestamp" THEN
 a_ret = THIS.GetItemTime(al_row,as_colname)
END IF

//for int or long
IF s_tempcoltype = "int" OR s_tempcoltype = "long" THEN
 a_ret = THIS.GetItemnumber(al_row,as_colname)
END IF

IF IsNull(a_ret) THEN
 RETURN -1
END IF

RETURN a_ret
 
end function

public function string uf_about ();
string s_func = ""

s_func = " 1. 求得表达式的值 (uf_evaluate) " +&
   " 2. 根据 SQL ,创建数据存储 (uf_setsqlselect) ~r~n " +&
   " 3. 得到任意列的值(uf_getitemvalue) ~r~n "
  
//s_func += SUPER :: uf_about()

  
RETURN "uo_ds_base object member's functions : ~r~n" + s_func


end function
public function string uf_globalreplace (string as_source, string as_old, string as_new);
//**************************************************************//
//function                 : 用指定的字符串替换指定字符串
//parm                     :
//         1. as_source    : 原来的字符串
//         2. as_old       : 将要被替换的字符串
//         3. as_new       : 用来替换的字符串
//return   : 新的字符串
//author   : hzh
//date     : 2002.11.14
//*************************************************************//

Long     l_newlen, l_oldlen, l_start
String   s_null, s_source


IF IsNull(as_source) OR IsNull(as_old) OR IsNull(as_new) THEN
 SetNull(s_null)
 RETURN s_null
ELSE
 l_oldlen = Len(as_old)
 l_newlen = Len(as_new)
 as_Old = Lower(as_old)
 s_Source = Lower(as_source)
END IF

l_start = Pos(s_source, as_old)

DO WHILE l_start > 0
 as_source = Replace(as_source, l_start, l_oldlen, as_new)
 s_source = Lower(as_Source)
 l_start = Pos(s_source, as_old, (l_start + l_newlen))
LOOP


RETURN as_source

end function
on uo_ds_base.create
call super::create
TriggerEvent( this, "constructor" )
end on

on uo_ds_base.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

-----------------------------------------------------------------


$PBExportHeader$nvo_excel.sru
$PBExportComments$和 excel 通讯的功能函数
forward
global type nvo_excel from nonvisualobject
end type
end forward

global type nvo_excel from nonvisualobject
end type
global nvo_excel nvo_excel

type prototypes
Private:
 Function uint GetModuleFileNameA(ulong hModule,ref string lpFilename,ulong nSize) Library "kernel32.dll"
end prototypes

type variables

Private:
//存储要导出的数据
uo_ds_base ids_data

//列名
String is_columnname[]

//列的标题
String is_columntitle[]

//列的显示格式
String is_columnformat[]

//列的类型
String is_columntype[]
end variables

forward prototypes
public function integer uf_toexcel (datastore ads_data, readonly string as_title)
public function integer uf_toexcel (datawindow adw_data, readonly string as_title)
private function integer uf_setdatasource (datawindow adw_data)
private function integer uf_setdatasource (datastore ads_data)
private function integer uf_datatoexcel (string as_title)
public function string uf_about ()
private function integer uf_initcolumn ()
end prototypes

public function integer uf_toexcel (datastore ads_data, readonly string as_title);

/**********************************************************/
//Function                 : 转换数据到 excel
//parm                     :
//        1. ads_data      : 包含源数据的对象
//        2. as_title      :  excel 的标题
//return                   : 1 is success and -1 is fail
//Author                   : hzh
//date                     : 2003.12.08
/**********************************************************/

IF THIS.uf_setdatasource(ads_data) <> 1 THEN RETURN -1

IF NOT IsValid(ids_data) THEN RETURN -1

IF ids_data.RowCount() < 1 THEN RETURN -1

THIS.uf_initcolumn()

THIS.uf_datatoexcel(as_title)


RETURN 1
end function

public function integer uf_toexcel (datawindow adw_data, readonly string as_title);
/**********************************************************/
//Function                 : 转换数据到 excel
//parm                     :
//        1. adw_data      : 包含源数据的对象
//        2. as_title      :  excel 的标题
//return                   : 1 is success and -1 is fail
//Author                   : hzh
//date                     : 2003.12.08
/**********************************************************/

IF THIS.uf_setdatasource(adw_data) <> 1 THEN RETURN -1

IF NOT IsValid(ids_data) THEN RETURN -1

IF ids_data.RowCount() < 1 THEN RETURN -1


THIS.uf_initcolumn()

THIS.uf_datatoexcel(as_title)

RETURN 1
end fun

Keil调试中Watch Window变量导出到文件的原生实现方案 嵌入式调试中的变量监视本质上是实时内存快照,缺乏持久化与可追溯性。Keil µVision的Watch Window虽支持交互式查看,但其数据默认不保存、不可编程提取,导致故障复现难、团队协作低效、回归测试依赖人工。本文围绕Keil调试命令、_WPrint()函数和DWARF调试信息原理,揭示如何利用原生能力将Watch变量(包括结构体字段、数组元素、指针解引用)稳定导出为CSV/JSON等结构化格式。方案规避宏录制不可靠、插件兼容性差及授权风险,适配MDK-ARM v5.30–v5.37全系列,支撑EMC 阅读详情

相关推荐

PowerBuilder导出Excel全攻略:从SaveAs到OLE与大数据量方案

在传统企业应用开发中,数据导出到Excel是报表与数据交换场景下的高频需求。PowerBuilder作为成熟的企业级开发工具,提供了数据窗口(DataWindow)这一核心组件,通过其SaveAs方法可以快速实现基础导出,但面对复杂格式、大数据量或跨进程操作时,往往需要更深入的技术方案。本文从数据导出的基本概念出发,剖析SaveAs的底层实现与局限,进而引入基于OLE的Excel对象模型控制,实现单元格级格式定制,并针对万级数据量场景给出ADODB直连数据库批量写入的优化思路。同时结合科学计数法、OLE进程

weixin_27743991的博客 338

PowerBuilder导出Excel的三种实现方案与常见坑位避坑指南

在遗留系统运维与二次开发中,报表导出是高频需求。PowerBuilder作为企业级开发工具,其核心组件DataWindow承担着数据展示与交互的重任。将DataWindow中的数据转换为Excel文件,看似简单,却涉及多种技术路径与工程权衡。从原理上讲,SaveAs方法本质是生成Tab分隔文本,虽能快速落盘但格式控制力弱;OLE直写Excel.Application则能实现单元格级精细控制,却受限于跨进程通信性能;混合方案先落盘再格式化,平衡了速度与样式。在实际业务场景中,HIS、ERP、MES等系统的报表

weixin_31856057的博客 333

PowerBuilder导出Excel实战:三大技术路线与高频问题排查方案

在企业级应用开发中,数据导出Excel是极为普遍的需求,尤其在一些核心业务由PowerBuilder等传统工具承载的存量系统中,熟练掌握各类导出技术至关重要。DataWindow和Excel单元格模型在数据结构与格式语义上存在本质差异,若处理不当,常引发表头错位、数字科学计数法、日期序列化等失真问题。围绕PB导出场景,业界主流采用SaveAs语句、OLE自动化与剪贴板中转三种路线。SaveAs简洁高效但缺乏格式控制;OLE可深度操控电子表格对象,实现模板化样式复用;剪贴板适合轻量快速搬运。面对万行级大数据量

weixin_29698641的博客 224

PowerBuilder 9.0白貂框架剖析:从数据窗口基类到老系统维护实践

在企业管理软件领域,PowerBuilder凭借强大的数据窗口(DataWindow)技术,在MIS和HIS系统中长期占据一席之地。围绕PB 9.0沉淀而出的白貂框架,以精简的基类库封装了事务管理、窗口初始化、通用增删改查、打印预览及权限控制等高频操作,让开发者从重复的底层代码中解放出来,专注于业务逻辑本身。理解继承、封装和事件顺序等面向对象原理,是掌握这套框架的关键,也是维护多年老系统的核心能力。白貂框架的价值不仅体现在缩短新功能开发周期,更在于统一代码风格、降低维护成本,并借助集中式日志与事务封装保障系

weixin_34184158的博客 458

PowerBuilder 9.0白貂框架实战:数据窗口与HIS系统维护指南

PowerBuilder作为传统企业级应用开发语言,在银行、医院等关键行业中仍有大量存量系统。白貂框架是PB环境下的一套快速开发基础框架,通过继承机制将数据窗口、权限控制、日志等通用能力封装为祖先对象,使开发者只需关注业务逻辑。数据窗口是PB的灵魂,其可视化定义与打印预览(PrintPreview)功能在报表场景中至关重要。框架的价值在于减少重复劳动、统一编码规范,并降低新人的上手门槛。在HIS维护、ERP客户端等场景中,掌握白貂框架能显著提升维护效率。本文基于PB 9.0实战,覆盖数据库连接配置、带权限的

weixin_34356555的博客 417

pb转换成xml的程序

可以将PB的数据窗口,非常快捷和灵活的转换成XML,程序中有相关函数调用。

PB的datawindow导出到excel文件

PB的datawindow导出到excel文件

vue微前端qiankun框架学习到项目实战,基座登录动态菜单及权限控制

技术无关,独立开发,独立部署,增量升级,独立运行,微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。

前端开发工程师 9747

校招总结—FPGA从入门到放弃

校招总结—FPGA从入门到放弃 感谢咸鱼FPGA的授权转发,原文地址为https://www.cnblogs.com/xianyufpga/ 其实 offer 早就定下来了,最近忙着入党考试,现在才腾出时间来写个总结。我校招开始于 7 月底,算是比较晚了,后面加了各大校招交流群,发现很多同学都是过完年后就开始打磨项目、复习基础、寻找实习。对比之下我这准备确实仓促,不过结果还算满意。 ...

qq_31515205的博客 8605

汇川伺服Modbus-RTU通讯实战:从帧结构解析到西门子PLC配置

本文详细解析了汇川伺服与西门子PLC通过Modbus-RTU协议进行通讯的实战步骤,包括帧结构解析、硬件连接、参数设置及PLC程序配置。通过具体案例和常见问题排查指南,帮助工程师快速掌握工业自动化中的通讯技术,提升设备调试效率。

weixin_33670713的博客 453

LangChain实战:Plan and Execute代理在智能预算规划中的应用

本文详细介绍了如何利用LangChain框架中的Plan and Execute代理实现智能预算规划。通过拆解复杂财务问题、调用多工具链协作,该代理能自动完成从个人月度预算到家庭年度综合预算的智能规划,并具备消费习惯学习和多目标优化等进阶功能,帮助用户实现精准财务管理和决策优化。

weixin_42530732的博客 382

Transformer实战(32)——Transformer模型压缩

在本节中,我们学习了如何在硬件资源受限的情况下减轻运行大模型的负担。我们介绍了如何通过蒸馏、剪枝和量化从训练好的模型中提取高效模型。预训练轻量级的通用语言模型(如 DistilBERT) 可以在各种任务上进行微调,并表现出与非蒸馏模型相当的性能。随着数据量的不断增加,我们希望模型能够更快地运行,在这方面,高效 Transformer 起着至关重要的作用。

盼小辉丶的博客 2549

【ArcGIS Pro微课1000例】0073:ArcGIS Pro3.5.2学习版下载及安装教程

ArcGIS Pro 3.5.2安装教程摘要:系统需Windows10及以上,8GB内存(推荐32GB)。安装步骤:1)安装.NET 8.0运行环境;2)执行主程序安装包,按向导完成基础安装;3)安装升级补丁;4)替换AfCore.dll文件并导入注册表。注意安装后删除临时文件节省空间。软件下载地址包含在百度网盘链接。安装过程需依次完成环境配置、主程序安装、补丁更新及破解步骤。

智慧空间实验室 1774

基于ESP32Cam摄像头+YOLOv3完成图像识别_355

本项目正是在此背景下提出,设计一个基于ESP32Cam摄像头的图像识别系统,通过WIFI热点通信实现图像数据的传输,并利用上位机(Windows与Android平台的QT APP)实时显示原始图像与识别结果,实现目标检测、识别与标注功能。

595

Open3D——直通滤波(python详细过程版)【2025最新版】

python就一个字:强。博客长期更新,本文最近更新时间为:2025年1月11日。

点云侠的博客 7515

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 浅谈如何有效建立权限管理体系(原创)
下一篇: 浅谈如何查阅PB利用OLE操作WORD、EXCEL的函数?(原创)
balloonman2002
博客等级 码龄24年 115粉丝 30原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值