亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        WEB頁面打印及導出EXCEL文檔的方法

        2016-12-01 02:14:38趙瑛
        中國科技縱橫 2016年14期
        關鍵詞:報表表格內(nèi)存

        趙瑛

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

        WEB頁面打印及導出EXCEL文檔的方法

        趙瑛

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

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

        php web excel javascript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        1.2 ScriptX打印組件

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

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

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

        1.3 將報表導出成Word,Excel或PDF形式打印

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        3 結(jié)語

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

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

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

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

        猜你喜歡
        報表表格內(nèi)存
        《現(xiàn)代臨床醫(yī)學》來稿表格要求
        統(tǒng)計表格的要求
        統(tǒng)計表格的要求
        統(tǒng)計表格的要求
        “春夏秋冬”的內(nèi)存
        當代陜西(2019年13期)2019-08-20 03:54:22
        LabWindows/CVI中Excel報表技術研究
        測控技術(2018年8期)2018-11-25 07:42:28
        從三大報表讀懂養(yǎng)豬人的成績單
        基于內(nèi)存的地理信息訪問技術
        月度報表
        中國紡織(2009年7期)2009-08-07 06:56:16
        上網(wǎng)本為什么只有1GB?
        国产99视频精品免视看9| 加勒比日韩视频在线观看| 国产大屁股喷水视频在线观看| 天天综合网天天综合色| 欧美成人中文字幕| 一本色道久久88综合| 玖玖色玖玖草玖玖爱在线精品视频| 国产女人的高潮国语对白| 亚洲第一网站免费视频| 加勒比熟女精品一区二区av| 日本系列中文字幕99| 国产精品 人妻互换| 久久精品免费免费直播| 丰满人妻一区二区三区免费| 日本道免费一区二区三区日韩精品| ā片在线观看免费观看| 亚洲AV无码永久在线观看| 亚洲激情视频在线观看a五月| 国产亚洲欧洲AⅤ综合一区| 亚洲一区二区三区麻豆| 日本三级香港三级人妇99| 人妻少妇精品中文字幕av蜜桃| 91精品久久久久含羞草| 深夜日韩在线观看视频| 国产成人无码综合亚洲日韩| 老太脱裤让老头玩ⅹxxxx| 一区二区特别黄色大片| 亚洲一区二区在线观看免费视频 | 被黑人猛躁10次高潮视频| 国产最新AV在线播放不卡| 伊人久久亚洲综合av影院| 亚洲精品一区二区国产精华液 | 无遮挡1000部拍拍拍免费| 性色av无码不卡中文字幕| 国产精品女丝袜白丝袜| 国产自拍偷拍视频免费在线观看| 黑森林福利视频导航| 日韩欧美国产丝袜视频| 亚洲日本中文字幕乱码| 中文字幕人妻无码视频| 亚洲h视频|