PowerBuider在导出Excel之前,设置列名为中文
解决导出的Excel列名为中文的问题
用 saveasascii(docname,excel5!,true)方法虽然导出的列名是中文,但是导出的数据存在一系列的问题,比如数据类型问题、身份证号码后四位为0的问题等等;
用 saveas(docname)方法,虽然导出的列名是英文,但是数据还是按照数据窗口的显示方式导出来的。
查看PB帮助文档dbname的设置,就可以轻易的把列名设置为中文,见下图:

1、静态设置列名如下代码:
dw_name.object.username.dbname = '用户名' //username是列名
dw_name.object.password.dbname = '密码'
2、动态设置列名代码如下:
//该页的数据窗口叫dw_name,导出按钮的click()事件string docname, namedinteger valuestring ls_colname,ls_text,ls_modistr,ls_collong numcols,numrows,c,rboolean lb_exist = FALSEdocname = "新昌县城乡居民社会养老保险参(续)保人员名册"value = GetFileSaveName("选择保存文件",docname, named, "XLS", "XLS 文件(*.xls),*.xls") IF value = 1 THENlb_exist = FileExists(docname) IF lb_exist THEN value = MessageBox("保存", docname+"已经存在,是否覆盖?",Exclamation!, YesNo!) END IF IF value = 1 THEN numcols = long(dw_name.Object.DataWindow.column.count) numrows = dw_name.rowcount( )FOR c=1 TO numcolsls_col = "#"+string(c)+".name"ls_colname = dw_name.describe(ls_col)ls_modistr = ls_colname+"_t.text"ls_text = string(dw_name.describe(ls_modistr))dw_name.Modify(ls_colname+".dbName='"+trim(ls_text)+"'")NEXTvalue = dw_name.saveas(docname,excel5!,true)IF value = 1 THEN MessageBox("提示信息","导出数据成功!")ELSEMessageBox("错误信息","导出数据失败!")RETURN -1END IF END IFEND IF