在PB9中可以通過(1)saveas(ls_path, excel!, true)將數據窗口中的data數據導出為excel,可以通過(2)saveas(ls_path, htmltable!, true)將數據窗口中的display數據導出為html格式的excel文件,也可以通過(3)saveasascii(ls_path)將數據窗口中的display數據導出為excel文件。
第(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中的'
通過dw_1.object.datawindow.data.htmltable這種方式導出的excel文件中數據的字體大小默認為12號,字體默認為宋體,這個時候可以通過在'
具體可以這樣處理:
string ls_htmldata
ls_htmldata = dw_1.object.datawindow.data.htmltable
//以下函數將ls_htmldata中的第一個'
str_replace(ls_htmldata, '
ls_htmldata = '~r~n' +&
'~r~n' +&
ls_htmldata
然后通過fileopen, filewrite , fileclose 將ls_htmldata保存到(*.xls)excel文件中
這樣就可以既保證導出的xls文件不顯示亂碼,同時又能正確的顯示全數字的文本字段,再者改變默認字體為Times New Roman,默認字號為9號。
另外導出的excel文件由於是html格式的,所以每次打開的時候速度會計較慢,我們可以在filewrite后,通過oleobject的方法將本次保存的文件用excel打開,然后再保存,這樣就可以保證導出的文件是名副其實的excel文件了。