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文檔 縱橫頁面并存
主站蜘蛛池模板: 大陆精大陆国产国语精品1024| 熟妇人妻无乱码中文字幕真矢织江 | 曰韩免费无码AV一区二区| 亚洲欧美在线综合一区二区三区| 丁香综合在线| 中文字幕久久亚洲一区| 人人爱天天做夜夜爽| 久久久久无码精品国产免费| 狠狠色丁香婷婷| 亚洲成人黄色在线观看| 99在线免费播放| 69视频国产| 国产小视频网站| 亚洲婷婷在线视频| 成·人免费午夜无码视频在线观看| 亚洲男人的天堂在线| 国产成人免费观看在线视频| 欧洲熟妇精品视频| 国产精品一区不卡| 尤物在线观看乱码| 人妻中文字幕无码久久一区| 国产爽妇精品| 国产嫖妓91东北老熟女久久一| 国产av色站网站| 成年人福利视频| 免费看a毛片| 国产91线观看| 伊人久久福利中文字幕| 欧美日韩国产综合视频在线观看| 国产精品久久久久久久久久久久| 2021亚洲精品不卡a| 99草精品视频| 日本久久久久久免费网络| 特级毛片免费视频| 天天综合亚洲| 国产成人精品第一区二区| 国产一区自拍视频| 一本综合久久| 不卡视频国产| 九九免费观看全部免费视频| 激情综合图区| 国产性猛交XXXX免费看| 久久婷婷国产综合尤物精品| 国产99免费视频| 四虎永久在线精品国产免费| 国产精品30p| 熟妇丰满人妻| 国产女人18水真多毛片18精品| 毛片久久网站小视频| 成人国产精品一级毛片天堂| 伊人国产无码高清视频| 婷婷伊人久久| AV不卡在线永久免费观看| 国产日本一区二区三区| 久久国产成人精品国产成人亚洲 | 99热国产在线精品99| 国产精品视频系列专区| 亚洲最黄视频| 亚洲精品在线观看91| 国产一级特黄aa级特黄裸毛片| 一级毛片免费播放视频| 亚洲AV无码乱码在线观看代蜜桃 | 精品91视频| 亚洲天堂网在线播放| 国产精品嫩草影院av | 国产美女一级毛片| 人妖无码第一页| 久久精品中文字幕免费| 四虎精品免费久久| 国产成人免费| 999国产精品永久免费视频精品久久 | 国产精品第三页在线看| 不卡网亚洲无码| 国产va欧美va在线观看| 国产无人区一区二区三区| 成人在线观看一区| 国内精品九九久久久精品| 成人91在线| 综合人妻久久一区二区精品 | 亚洲一区二区视频在线观看| 亚洲V日韩V无码一区二区| 尤物在线观看乱码|