“How to Save Report To Excel” 技術改進
昨天做了WAD採用JS匯出Excel的方案,雖然結果已經Ok,但是感覺太複雜了,非要整出兩個表來,一個顯示,一個作為匯出用。 所以今天考慮如何在一個報表中,實現兩個功能,即可看可導。
首先,匯出的報表因為採用了樣式表的類,所以匯出後沒有顏色了,因為類匯出後就成了廢物了。 於是重點放在如何將樣式內嵌到標籤中。因為我關注的是背景色,所以我做了如下的修改:
$("td").each(function(i){
bg_color = $(this).css("background-color");
$(this).css("background-color",bg_color);
});
就是把樣式表中的顏色,提到標籤中,這樣不會影響表的展示,但是有利於表匯出後有對應的背景顏色。這個改進,實現了背景色全灰的問題。這段程式碼可以放在報表展示時就執行,免得匯出時執行影響使用者心情。
接下來要解決的是如何去除超級連結。我想到了正規表示式,不過學藝不精,我原向對類似 110 ,能夠一次替換成 110把前後兩個標籤拿掉,但是不知道如何寫,所以我採用分別拿掉 和的方法去做:
var reg = new RegExp("]*>","ig");
var reg1 = new RegExp("","ig");
var uttext = document.all('table1').outerHTML;
uttext = outtext.replace(reg,"");
uttext = outtext.replace(reg1,"");
這個段程式碼可以放在匯出中執行。 這樣匯出後的單元格就不會有煩人且無用的超級連結了。 還有一個問題就是,匯出後的格子之間最好有線框(使用者沒有說,但是我們想到了)。於是考慮能否用正則法則。 因為匯出要有格線,必須對td標籤加邊框,所以我做了如下修改。
var reg2 = new RegExp("
於是完整的匯出函式如下:
function bringtoexcel(){
var reg = new RegExp("]*>","ig");
var reg1 = new RegExp("","ig");
var reg2 = new RegExp("
uttext = outtext.replace(reg,"");
uttext = outtext.replace(reg1,"");
uttext = outtext.replace(reg2,"
window.clipboardData.setData("Text",outtext);
var ExApp = new ActiveXObject("Excel.Application")
var ExWBk = ExApp.workbooks.add()
var ExWSh = ExWBk.worksheets(1)
ExApp.DisplayAlerts = false
ExApp.visible = true
ExWBk.worksheets(1).Paste;
}
測試OK,可以休息一下了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/554557/viewspace-617255/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在“How to Save Report To Excel”中遭遇 Automation異常Excel
- Save and Edit a Report Specification locally
- 持續改進之技術篇#1
- 改進DevSecOps框架的 5 大關鍵技術dev框架
- 關於FY型液下泵的安裝要求和技術改進
- 技術改變生活方式
- 區塊鏈改進身份和訪問管理技術(IAM)的方式區塊鏈
- 技術基礎 | 改進版的Apache Cassandra客戶端請求路由Apache客戶端路由
- 如何最佳化並改進美顏sdk人臉識別技術?
- 實時驗證碼技術可改進生物識別身份驗證
- 交流技術的進~~~~
- 透過AWR REPORT 或 ADDM REPORT進行SQLTUNESQL
- 何愷明Focal Loss改進版!GFocal Loss:良心技術,無cost漲點
- 前端技術演進(七):前端跨棧技術前端
- DEVELOPER REPORT直接生成EXCEL要點(10.1.2)DeveloperExcel
- 八種改變未來的技術
- 技術如何改變敏捷的規則敏捷
- AI Agent技術的最新進展與改變世界的典型專案巡禮AI
- 4個Excel核心技術,讓你效率翻倍!Excel
- 前端技術演進(一):Web前端技術基礎前端Web
- 走進JavaWeb技術世界3:JDBC的進化與連線池技術JavaWebJDBC
- 革命:鋰電池技術可能改變世界
- npm install -save 和 -save-devNPMdev
- npm –save-dev –save 的區別NPMdev
- 跨平臺技術演進
- jaeger的技術演進之路
- 技術管理進階——如何面試面試
- 移動端技術演進
- canvas save()Canvas
- 前端技術演進(六):前端專案與技術實踐前端
- 技術管理進階——技術Leader如何拒絕業務方?
- 技術宅如何用ML技術進化為女裝大佬
- AI技術將會如何改變遊戲設計?AI遊戲設計
- 改變開發者工作方式的15種技術
- 1269道Java技術答疑,阿里技術專家幫你Java技術進階Java阿里
- 一個阿里技術男經歷的六年“雙11”:技術改變阿里阿里
- 處理Excel表格標題靈活技術二則Excel
- excel查詢資料的技術實現選擇Excel