程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> pb9中使用htmltable方式將數據窗口導出為excel文件的幾點看法

pb9中使用htmltable方式將數據窗口導出為excel文件的幾點看法

編輯:SyBase教程

在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前面加上這一句'<META HTTP-EQUIV="Content-type" Content="text-html;charset=gb2312">',就可以保證最終filewrite後的excel不會顯示為亂碼。
    在dw_1.object.datawindow.data.htmltable前面加上這一句'<html xmlns:x="urn:schemas-microsoft-com:office:excel">',並且在dw_1.object.datawindow.data.htmltable中的'<table>'屬性中添加'x:str'屬性值,即可保證導出的數字按照原樣顯示。
    通過dw_1.object.datawindow.data.htmltable這種方式導出的excel文件中數據的字體大小默認為12號,字體默認為宋體,這個時候可以通過在'<table>'屬性中添加'style=~'font-size:9.0pt;font-family:"Times New Roman,serif;"~''屬性值來改變默認的字體為“Times New Roman”,默認字號為9號
    具體可以這樣處理:
[cpp]
string ls_htmldata 
ls_htmldata = dw_1.object.datawindow.data.htmltable 
//以下函數將ls_htmldata中的第一個'<table'替換為'<table x:str style=~'font-size:9.0pt;font-family:"Times New Roman,serif;"~'', 函數請自己完善 
str_replace(ls_htmldata, '<table', '<table x:str style=~'font-size:9.0pt;font-family:"Times New Roman,serif;"~'') 
ls_htmldata = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">~r~n' +& 
           '<META HTTP-EQUIV="Content-type" Content="text-html;charset=gb2312">~r~n' +& 
           ls_htmldata 
然後通過fileopen,filewrite ,fileclose 將ls_htmldata保存到(*.xls)excel文件中 
 
 
        這樣就可以既保證導出的xls文件不顯示亂碼,同時又能正確的顯示全數字的文本字段,再者改變默認字體為Times New Roman,默認字號為9號。
        另外導出的excel文件由於是html格式的,所以每次打開的時候速度會計較慢,我們可以在filewrite後,通過oleobject的方法將本次保存的文件用excel打開,然後再保存,這樣就可以保證導出的文件是名副其實的excel文件了。

摘自 yyoinge的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved