第(1)种方法导出的文件对于客户来讲,实际意义并不大。第(2)和第(3)中方法都存在一定的缺陷:第(2)种导出的xls文件,在导出前通过dw_1.modify("DataWindow.HTMLTable.Border='1'")设置htmltable显示框线,来使得导出的excel文件包含边框,但是导出的文件有可能显示乱码,而且对于以0为开头的或者位数较长的纯数字的字符串数据,导出后的数据会失真(如:单元格数据为:01001, 但是导出的xls文件打开时,数据却为:1001;或者单元格数据为:123456789123456789, 导出的xls文件打开后,数据却为:1.23457E+17);第(3)种导出的数据没有框线,看起来也比较混乱,同时对于以0为开头的或者位数较长的纯数字的字符串数据,导出后的数据也会失真。
本文主要介绍第(2)种方法,至于第(3)中,在(PB调用SaveAsAscii转excel)这个链接上有关于以0为开头的纯数字的字符串数据的处理方法。
在pb的datawindow中具有如下属性dw_1.object.datawindow.data.htmltable, 该属性值与通过saveas(ls_path, htmltable!, true)导出的excel文件的内容基本上是一致的。因此我们可以考虑通过取得该属性值后,再将该属性值filewrite的方式来保存为excel文件。
在dw_1.object.datawindow.data.htmltable前面加上这一句'',就可以保证最终filewrite后的excel不会显示为乱码。
在dw_1.object.datawindow.data.htmltable前面加上这一句'',并且在dw_1.object.datawindow.data.htmltable中的'
'~r~n' +&
ls_htmldata
然后通过fileopen,filewrite ,fileclose 将ls_htmldata保存到(*.xls)excel文件中
这样就可以既保证导出的xls文件不显示乱码,同时又能正确的显示全数字的文本字段,再者改变默认字体为Times New Roman,默认字号为9号。
另外导出的excel文件由于是html格式的,所以每次打开的时候速度会计较慢,我们可以在filewrite后,通过oleobject的方法将本次保存的文件用excel打开,然后再保存,这样就可以保证导出的文件是名副其实的excel文件了。
摘自 yyoinge的专栏