999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

WEB頁面打印及導(dǎo)出EXCEL文檔的方法

2016-12-01 02:14:38趙瑛
中國科技縱橫 2016年14期
關(guān)鍵詞:頁面用戶方法

趙瑛

(大慶鉆探工程公司地質(zhì)錄井一公司資料解釋評價中心,黑龍江大慶 163411)

WEB頁面打印及導(dǎo)出EXCEL文檔的方法

趙瑛

(大慶鉆探工程公司地質(zhì)錄井一公司資料解釋評價中心,黑龍江大慶 163411)

本文以多項有關(guān)地質(zhì)錄井生產(chǎn)軟件的開發(fā)經(jīng)驗為實例,闡述了在php編程中使用javascript語言實現(xiàn)WEB頁面打印及導(dǎo)出EXCEL文檔的方法和技巧。主要探討針對不同需求實現(xiàn)不同打印方法和不同導(dǎo)出方式的優(yōu)缺點及相應(yīng)技術(shù)關(guān)鍵等問題,從而總結(jié)出,相對于Windows桌面應(yīng)用程序來講,Web應(yīng)用程序因為其特殊的呈現(xiàn)方式有種種限制,目前沒有一種方案可解決所有打印和導(dǎo)出問題,需針對不同用戶需求使用不同解決方法。

php web excel javascript

在多項地質(zhì)錄井生產(chǎn)軟件的開發(fā)中,當(dāng)涉及到有關(guān)Wed軟件的開發(fā)過程中,需要用到網(wǎng)頁數(shù)據(jù)表打印和EXCEL導(dǎo)出功能,以滿足不同人員的需求,開發(fā)中經(jīng)多種方法比較、測試,找到了滿足開發(fā)要求的具體方法,實現(xiàn)了WEB網(wǎng)頁中表格的打印和EXCEL轉(zhuǎn)換功能,改變了網(wǎng)頁表格傳統(tǒng)管理方式。

下面以有關(guān)地質(zhì)錄井生產(chǎn)軟件的開發(fā)經(jīng)驗,論述一下如何使用php、javascript語言實現(xiàn)瀏覽器端打印和EXCEL導(dǎo)出功能。

1 網(wǎng)頁中表格的打印

Web網(wǎng)開發(fā)軟件面臨一個難題,那就是打印。相對于Windows桌面應(yīng)用程序來講,Web應(yīng)用程序的打印有種種限制,在項目開發(fā)過程中經(jīng)常會遇到用戶不同的需求。 做過桌面應(yīng)用開發(fā)的人都會非常熟悉水晶報表、Active Report之類的報表控件,它們不僅有簡單靈活的設(shè)計界面,更具有非常強大的報表功能,能滿足各種報表的打印需求。而Web應(yīng)用則因為其特殊的呈現(xiàn)方式,只能尋求其他的解決方案。現(xiàn)在分析一下目前已經(jīng)成形的Web打印方案。

1.1 用IE打印網(wǎng)頁

IE5.0以上版本擁有強大的打印及打印預(yù)覽功能。在IE中打印網(wǎng)頁非常簡單。只需點一下工具欄上“打印”按鈕就可將當(dāng)前網(wǎng)頁打印出來。

下面簡要介紹如何設(shè)置一些打印參數(shù)。

如果我們直接點工具欄的“打印”按鈕或點“文件”菜單中的“打印”進行打印這個網(wǎng)頁的話,就會打印出很多不必要的信息。所以在打印前我們應(yīng)先用IE新增的“打印預(yù)覽”功能查看當(dāng)前網(wǎng)頁的實際打印效果。

在“打印預(yù)覽”對話框中,我們可以看到,網(wǎng)頁標(biāo)題、網(wǎng)頁的URL地址及打印日期等我們所不需要的信息也被打印出來了。而頁碼又在右上角。 如果需要按照我們所想要的樣式來打印網(wǎng)頁,可以在“頁面設(shè)置”中改變。方法如下。

選擇瀏覽器上面文件菜單中的“頁面設(shè)置”對話框,所有的設(shè)置都在這里!

IE自動給我們在頁眉和頁腳處加上了一些不必要的打印信息。如果不想要任何頁眉和頁腳的話,直接刪除它們就行了。

按照上面設(shè)置好后,你就可以打印了。但有時會發(fā)現(xiàn),網(wǎng)頁中的一些圖像在打印時不見了。因為IE的默認(rèn)設(shè)置是不打印網(wǎng)頁的背景顏色和圖像。只需進入IE的Internet選項將它選中(打上勾)就行了。具體操作方法是:點IE的主菜單中的“工具”——“Internet選項”——再在彈出的對話框中占擊“高級”選項卡,找到“打印背景顏色和圖像”一項。然后將“打印背景顏色和圖像”的選項打上勾,再點“確定”就可以了。

至此,我們就完成了對IE的打印設(shè)置。接下來,只要我們沒有關(guān)閉IE,我們就可以一直使用上述設(shè)置進行打印。打印前一般先進行打印預(yù)覽,效果滿意后再開始打印。

這種打印方式的特點是操作比較簡單,也是常用的打印方式,只需要將報表頁面設(shè)計好,用戶通過IE菜單中的打印功能完成打印。優(yōu)點是簡單,容易實現(xiàn)。

1.2 ScriptX打印組件

對于簡單的打印,我們用IE的功能就可以了,對于需要復(fù)雜設(shè)置的,使用ActiveX打印方式是比較理想的,只需要客戶端下載一個很小的打印插件,客戶端無需安裝任何C/S的格式設(shè)計器,就可以輕松實現(xiàn)打印格式的自定義,打印參數(shù)的自定義等等。

這種方案表格的數(shù)據(jù)不再以h t m l方式呈現(xiàn),而是呈現(xiàn)在ActiveX中。這種方案的優(yōu)點是打印的精確度高,分頁的可控性好,比如預(yù)定義紙型,設(shè)置打印方向,打印邊距,指定打印機,不彈出打印對話框直接打印等等。不必每次手工設(shè)定。DHTML+javascript編輯打印數(shù)據(jù)的格式展現(xiàn),實現(xiàn)格式的自定義。實現(xiàn)動態(tài)獲取打印數(shù)據(jù)。

使用范圍:該組件針對打印定位要求不是非常嚴(yán)格、大篇幅的文檔非常好用,但是對定位要求非常嚴(yán)格的報表不適合。

1.3 將報表導(dǎo)出成Word,Excel或PDF形式打印

這種方式需要將頁面導(dǎo)出成Office文檔或pdf,最低的要求是客戶端已經(jīng)安裝用以打開Word、Excel或Pdf文檔的軟件。這種方式可以通過水晶報表組件或其他一些第三方控件來實現(xiàn)。導(dǎo)出成Pdf形式后打印質(zhì)量和效果都很好,導(dǎo)出成Word或Excel后用戶可以自定義打印的內(nèi)容和格式。

總之,現(xiàn)有的打印方案各有所長,在開發(fā)過程中應(yīng)根據(jù)用戶的需求作選擇,利用IE打印簡單,容易實現(xiàn),在用戶需求簡單或打印內(nèi)容較少的情況下采用此方案比較適宜。利用控件打印可以實現(xiàn)完全自定義,但需要較高的技術(shù)要求和開發(fā)周期,利用導(dǎo)出的方式則可以滿足用戶需要自定義或打印內(nèi)容有多頁的需求。

2 網(wǎng)頁中表格的EXCEL導(dǎo)出

隨著BS體系結(jié)構(gòu)的廣泛使用,相對應(yīng)的數(shù)據(jù)保存技術(shù)也需改進,對應(yīng)Web頁面,也就是我們通常在瀏覽器看到的HTML文件,由標(biāo)示關(guān)鍵字與數(shù)據(jù)混合組成的文件。Web頁面數(shù)據(jù)導(dǎo)出簡單地說,就是分離數(shù)據(jù)與格式,同時保存數(shù)據(jù)為另外一種格式。

通過網(wǎng)頁形式生成excel文件供用戶下載,以達到數(shù)據(jù)導(dǎo)出的功能,首先需要修改http response等文件頭信息,修改后執(zhí)行此頁面會彈出窗口,提示下載到本地excel表格中,這種非實際在服務(wù)器端生成文件的優(yōu)點就是:對于并發(fā)請求該頁面的用戶來說不會發(fā)生服務(wù)器端文件同名覆蓋的問題。其次需要使用Javascript語言實現(xiàn)表格數(shù)據(jù)及樣式的讀取,下面簡單地介紹幾種在技術(shù)上常用的讀取方法。

2.1 Javascript實現(xiàn)把網(wǎng)頁中table的內(nèi)容導(dǎo)入到excel中有以下幾種方法

(1)直接拷貝整個表格到EXCEL中;(2)通過遍歷表格,給EXCEL中相應(yīng)的單元格賦值;(3)把表格中的內(nèi)容提取出來,利用IE另存為.csv的格式。

各方法的優(yōu)點:(1)直接拷貝表格,能夠保留表格中的原有的格式,比如,列,行的合并,對齊方式,底色等等;(2)通過遍歷表格,比較靈活,可以遍歷表格某些需要部分的內(nèi)容;(3)利用IE的另存為,不用創(chuàng)建ActiveXObject對象,可以處理表格合并方面的問題。

各方法的缺點:(1)可能彈出腳本錯誤:Automation不能創(chuàng)建對象。解決方法:啟用IE安全設(shè)置中對沒有標(biāo)記為安全的ActiveX控件進行初始化和腳本運行。由于整個表格復(fù)制到EXCEL中,給表格加個標(biāo)題,并加入到EXCEL中。(2)可能彈出腳本錯誤:Automation不能創(chuàng)建對象(解決方法如上)。

單元格合并時可能會出現(xiàn)問題,解決方法:合并單元格后再寫數(shù)據(jù)。(3)表格格式復(fù)雜時,會有問題,(rowspan>1 or colspan>1),解決方法:一般都是表頭格式比較復(fù)雜,可先把表頭固定,然后再循環(huán)寫其他數(shù)據(jù)。

2.2 EXCEL大數(shù)據(jù)量導(dǎo)出的解決方案

由于excel本身最多支持65535行數(shù)據(jù),在數(shù)據(jù)量較大的情況下,需要將整個數(shù)據(jù)分塊,利用excel的多sheet頁的功能,將超出65535行后的數(shù)據(jù)寫入到下一個sheet頁中,即通過多sheet頁的方式,突破了最高65535行數(shù)據(jù)的限定。下面就給出大數(shù)據(jù)量導(dǎo)出到excel的具體解決辦法。

首先,通過php程序判斷報表行數(shù),超過65535行后分SHEET寫入。在這種大數(shù)據(jù)量的報表生成和導(dǎo)出中,要占用大量的內(nèi)存,容易發(fā)生內(nèi)存溢出的情況。此時的內(nèi)存開銷主要是兩部分,一部分是該報表生成時的開銷,另一部分是該報表生成后寫入一個EXCEL時的開銷。對于此種情形,開發(fā)中使用如下方法解決。

將該報表設(shè)置起始行和結(jié)束行參數(shù),在API生成報表的過程中,分步計算報表,比如一張20萬行數(shù)據(jù)的報表,在生成過程中,可通過起始行和結(jié)束行分4-5次進行。這樣,就降低了報表生成時的內(nèi)存占用,在后面報表生成的過程中,如果發(fā)現(xiàn)內(nèi)存不夠,可回收前面報表的緩存。

導(dǎo)出EXCEL的過程,放在每段生成報表之后立即進行,改多個SHEET頁為多個EXCEL,即在分步生成報表的同時分步生成EXCEL,則生成EXCEL的內(nèi)存消耗也得以降低。通過多次生成,同樣可以在后面EXCEL生成所需要的內(nèi)存不足時,有效回收前面生成EXCEL時占用的內(nèi)存。

再使用文件操作,對每個客戶端的導(dǎo)出請求在服務(wù)器端根據(jù)SESSIONID和登陸時間生成唯一的臨時目錄,用來放置所生成的多個EXCEL,然后調(diào)用系統(tǒng)控制臺,打包多個EXCEL為RAR或者JAR方式,最終反饋給用戶一個RAR包或者JAR包,響應(yīng)客戶請求后,再次調(diào)用控制臺刪除該臨時目錄。

使用這種方法,首先是通過分段運算和生成,有效降低了報表從生成結(jié)果到生成EXCEL的內(nèi)存開銷。其次是通過使用壓縮包,響應(yīng)給用戶的生成文件體積大大縮小,降低了多用戶并發(fā)訪問時服務(wù)器下載文件的負擔(dān),有效減少多個用戶導(dǎo)出下載時服務(wù)器端的流量,從而達到進一步減輕服務(wù)器負載的效果。

3 結(jié)語

本文通過對多項地質(zhì)錄井生產(chǎn)軟件開發(fā)成果的經(jīng)驗總結(jié),對Wed軟件開發(fā)中使用的WEB頁面打印及EXCEL導(dǎo)出的方法深入分析和總結(jié),論述了使用WEB頁面打印及EXCEL導(dǎo)出的基本方法和技巧。相對于Windows桌面應(yīng)用程序來講,Web應(yīng)用程序因為其特殊的呈現(xiàn)方式有種種限制,目前沒有一種方案可解決所有打印和導(dǎo)出問題,需針對不同用戶需求使用不同解決方法。

[1](麥 奇 編著).《深入PHP4編程技術(shù)》.人民郵電出版社,1997.2.

[2](美)Scott Urman 著.《ORACLE8 PL/SQL 程序設(shè)計》.機械工業(yè)出版社,1998.6.

趙瑛(1970—),女,黑龍江大慶人,本科,主要研究地質(zhì)錄井解釋評價資料處理工作中的軟件開發(fā)。

猜你喜歡
頁面用戶方法
大狗熊在睡覺
刷新生活的頁面
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
如何獲取一億海外用戶
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 伊人无码视屏| 一级做a爰片久久毛片毛片| 免费毛片视频| 亚洲中字无码AV电影在线观看| 综合人妻久久一区二区精品| 婷婷色婷婷| 国产黄在线观看| 毛片免费观看视频| 久久青草免费91线频观看不卡| 国产毛片基地| 福利在线一区| 午夜国产精品视频黄| 伊在人亚洲香蕉精品播放| 亚洲高清中文字幕在线看不卡| 亚洲午夜福利精品无码不卡| 国产精品亚洲一区二区三区z| 香蕉久久国产超碰青草| 国产成人精品一区二区| 亚洲欧美一区在线| 亚洲天堂日本| 丝袜亚洲综合| 国产人在线成免费视频| 2021天堂在线亚洲精品专区| 人人91人人澡人人妻人人爽| 亚洲人成成无码网WWW| 国国产a国产片免费麻豆| 国产一区二区三区免费观看| 国产丝袜啪啪| a天堂视频在线| 国产在线自在拍91精品黑人| 亚洲日韩第九十九页| 亚洲av无码牛牛影视在线二区| 欧美一级高清片久久99| 国产欧美在线| 色欲色欲久久综合网| a级毛片一区二区免费视频| 国产男人的天堂| 老色鬼欧美精品| 午夜少妇精品视频小电影| 欧美啪啪网| 欧美日韩成人| 成人综合网址| 在线国产你懂的| 91蜜芽尤物福利在线观看| 99精品在线看| 国产99视频精品免费视频7| 免费人成在线观看视频色| 色香蕉网站| 国产极品嫩模在线观看91| 91色国产在线| a免费毛片在线播放| 国产jizz| 国产在线98福利播放视频免费| 成人一级黄色毛片| 丝袜无码一区二区三区| 国产69精品久久久久妇女| 亚洲午夜国产片在线观看| 国产人成乱码视频免费观看| 亚洲成人一区二区三区| 老司机aⅴ在线精品导航| 色妞www精品视频一级下载| 欧美精品在线视频观看| 国产精品网址你懂的| 亚洲IV视频免费在线光看| 国产精品白浆在线播放| 老司机久久精品视频| 亚洲九九视频| 九色视频线上播放| 色AV色 综合网站| 亚洲日韩欧美在线观看| 久久综合干| 久久96热在精品国产高清| 日韩欧美网址| 中国一级特黄视频| 免费毛片视频| 2020国产在线视精品在| 国产成人凹凸视频在线| 成人福利在线免费观看| 婷婷午夜影院| 中文字幕有乳无码| 日韩欧美国产成人| 久久6免费视频|