本發(fā)明涉及打印領(lǐng)域,尤其涉及一種智能打印方法及系統(tǒng)。
背景技術(shù):
目前已有的報(bào)表打印軟件只能夠按照待打印文檔的格式來(lái)原樣進(jìn)行打印,難以針對(duì)復(fù)雜表格進(jìn)行可定制的多樣化處理。尤其是,在對(duì)于數(shù)據(jù)量極大的表格進(jìn)行批量處理、裝訂成冊(cè)時(shí),需要在打印后由人手工進(jìn)行后期處理,十分繁瑣費(fèi)力。現(xiàn)階段的報(bào)表打印系統(tǒng)主要采用以下幾種方法解決:
(1)直接利用IE或Excel默認(rèn)的打印功能實(shí)現(xiàn)打??;
(2)使用XML技術(shù)實(shí)現(xiàn)打?。?/p>
(3)使用ActiveX控件控制打印。
(4)使用微軟公司的水晶報(bào)表等第三方打印控件工具控制打印。
其中直接利用IE或Excel等制表工具的打印功能,就是采用瀏覽器或者Office Excel作為用戶打印報(bào)表界面。這種方法僅能滿足簡(jiǎn)單報(bào)表的打印,難以精確控制客戶端打印機(jī),不能實(shí)現(xiàn)對(duì)報(bào)表每頁(yè)打印數(shù)據(jù)的控制、報(bào)表顯示時(shí)對(duì)動(dòng)態(tài)列的控制和打印時(shí)對(duì)動(dòng)態(tài)列的控制功能,因此難以打印復(fù)雜報(bào)表。
使用XML技術(shù),是采用XML作為中間格式轉(zhuǎn)換的工具,但現(xiàn)階段企業(yè)級(jí)數(shù)據(jù)庫(kù)中對(duì)XML的支持還不多,同時(shí)在制作報(bào)表時(shí)需要XML編輯器,在查看報(bào)表時(shí)也需要XML解析器,學(xué)會(huì)掌握XML需要涉及較為復(fù)雜的相關(guān)領(lǐng)域知識(shí),也需要一定的計(jì)算機(jī)背景,這些都會(huì)很大程度上增加用戶的使用成本,使得專門在報(bào)表打印系統(tǒng)中使用XML技術(shù)具有很大局限性。
ActiveX控件具有良好的跨平臺(tái)特性,廣泛應(yīng)用于Internet/Intranet開發(fā)中,這是現(xiàn)有B/S模式系統(tǒng)報(bào)表打印常用的解決方法,但它需要在客戶端注冊(cè),而且其安全性也不高,不能滿足企業(yè)級(jí)管理系統(tǒng)的安全要求。在現(xiàn)代瀏覽器中,ActiveX控件還面臨著兼容性不足,運(yùn)行性能較差等缺點(diǎn)。
使用水晶報(bào)表等專業(yè)的報(bào)表軟件,這些軟件主要通過(guò)對(duì)表頭的自定義編輯、手動(dòng)對(duì)數(shù)據(jù)源的選擇進(jìn)行編程來(lái)實(shí)現(xiàn)復(fù)雜報(bào)表的建立,是大型報(bào)表系統(tǒng)常用和推薦的解決方案。但這些軟件都包含了報(bào)表的創(chuàng)建與打印兩部分功能,用戶很難根據(jù)已經(jīng)通過(guò)Excel等軟件制好的表格直接完成自定義打印功能,而且其也無(wú)法保留原有表頭樣式,編程也比較復(fù)雜。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是目前已有的報(bào)表打印軟件只能夠按照待打印文檔的格式來(lái)原樣進(jìn)行打印,難以針對(duì)復(fù)雜表格進(jìn)行可定制的多樣化處理,為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種智能打印方法及系統(tǒng)。
本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種智能打印方法,該方法包括以下步驟:
步驟1:讀入報(bào)表數(shù)據(jù)后,將報(bào)表數(shù)據(jù)的格式轉(zhuǎn)換為預(yù)設(shè)格式;
步驟2:識(shí)別報(bào)表數(shù)據(jù)并設(shè)置待打印區(qū)域、打印樣式及打印紙張信息,生成報(bào)表數(shù)據(jù)的打印信息;
步驟3:獲取對(duì)應(yīng)打印機(jī),將打印信息傳遞至打印機(jī)。
本發(fā)明的有益效果是:本發(fā)明提供了更靈活多樣的報(bào)表打印樣式,針對(duì)復(fù)雜表格進(jìn)行可定制的多樣化處理,允許用戶根據(jù)自己的需求靈活選擇報(bào)表打印樣式和打印區(qū)域,滿足了多樣化的打印需要。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
進(jìn)一步地,所述步驟1包括以下步驟:
步驟1.1:讀入待打印的報(bào)表數(shù)據(jù);
步驟1.2:識(shí)別不同的待讀取報(bào)表數(shù)據(jù)類型,并采用相應(yīng)的讀取方式來(lái)讀取報(bào)表數(shù)據(jù);
步驟1.3:統(tǒng)一報(bào)表數(shù)據(jù)格式為Excel表格文件格式。
采用上述進(jìn)一步方案的有益效果是本發(fā)明提供了更便捷的報(bào)表數(shù)據(jù)輸入方式,能夠支持更多種類的報(bào)表數(shù)據(jù)源,并將其統(tǒng)一為Excel表格文件格式進(jìn)行操作。
進(jìn)一步地,所述步驟2包括以下步驟:
步驟2.1:識(shí)別報(bào)表數(shù)據(jù)的標(biāo)題、主欄、賓欄及內(nèi)容;
步驟2.2:設(shè)置待打印區(qū)域,并選擇打印樣式;
步驟2.3:設(shè)置打印紙張大小、紙張方向。
采用上述進(jìn)一步方案的有益效果是智能選取待打印報(bào)表區(qū)域,使打印區(qū)域選取更便捷智能。
進(jìn)一步地,所述打印信息包括報(bào)表數(shù)據(jù)、打印樣式、待打印區(qū)域和打印紙張信息。
進(jìn)一步地,所述打印樣式包括主賓欄打印、自選區(qū)域打印、原樣打印、跳行打印和蝴蝶版打印。
本發(fā)明提供的另一種技術(shù)方案如下:一種智能打印系統(tǒng),該系統(tǒng)包括數(shù)據(jù)讀入及格式化模塊、報(bào)表打印樣式設(shè)置模塊、打印機(jī)控制模塊;
所述數(shù)據(jù)讀入及格式化模塊和打印機(jī)控制模塊分別與所述報(bào)表打印樣式設(shè)置模塊連接;
所述數(shù)據(jù)讀入及格式化模塊用于讀入報(bào)表數(shù)據(jù)后,將報(bào)表數(shù)據(jù)的格式轉(zhuǎn)換為預(yù)設(shè)格式;
所述報(bào)表打印樣式設(shè)置模塊用于識(shí)別報(bào)表數(shù)據(jù)并設(shè)置待打印區(qū)域、打印樣式和打印紙張信息,生成報(bào)表數(shù)據(jù)的打印信息;
所述打印機(jī)控制模塊用于獲取對(duì)應(yīng)打印機(jī),將打印信息傳遞至打印機(jī)。
進(jìn)一步地,所述報(bào)表打印樣式設(shè)置模塊用于識(shí)別報(bào)表的標(biāo)題、主欄、賓欄及內(nèi)容,設(shè)置待打印區(qū)域,并選擇打印樣式,設(shè)置打印紙張大小、紙張方向,所述打印樣式包括主賓欄打印、自選區(qū)域打印、原樣打印、跳行打印和蝴蝶版打印。
進(jìn)一步地,所述數(shù)據(jù)讀入及格式化模塊用于讀入待打印報(bào)表的原始數(shù)據(jù),并識(shí)別不同的待讀取報(bào)表文件類型,采用相應(yīng)的讀取方式來(lái)讀取數(shù)據(jù)信息,最后將報(bào)表文件統(tǒng)一為Excel表格文件格式。
進(jìn)一步地,所述打印信息包括報(bào)表數(shù)據(jù)、打印樣式、待打印區(qū)域及打印紙張信息。
進(jìn)一步地,所述系統(tǒng)還包括用戶界面及打印機(jī),所述用戶界面包括Windows應(yīng)用程序客戶端和IE瀏覽器ActiveX插件,所述打印機(jī)用于打印打印信息。
附圖說(shuō)明
圖1為本發(fā)明一種智能打印方法流程示意圖;
圖2為本發(fā)明一種智能打印系統(tǒng)結(jié)構(gòu)示意圖;
圖3為本發(fā)明一種智能打印方法及系統(tǒng)主賓欄打印示意圖;
圖4為本發(fā)明一種智能打印方法及系統(tǒng)蝴蝶版打印示意圖。
附圖中,各標(biāo)號(hào)所代表的部件列表如下:
1、數(shù)據(jù)讀入及格式化模塊,2、報(bào)表打印樣式設(shè)置模塊,3、打印機(jī)控制模塊。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如圖1所示,本發(fā)明提供了一種智能打印方法,該方法包括以下步驟:
步驟1:讀入報(bào)表數(shù)據(jù)后,將報(bào)表數(shù)據(jù)的格式轉(zhuǎn)換為預(yù)設(shè)格式;
步驟2:識(shí)別報(bào)表數(shù)據(jù)并設(shè)置待打印區(qū)域、打印樣式及打印紙張信息,生成報(bào)表數(shù)據(jù)的打印信息;
步驟3:獲取對(duì)應(yīng)打印機(jī),將打印信息傳遞至打印機(jī)。
本發(fā)明的有益效果是:本發(fā)明提供了更靈活多樣的報(bào)表打印樣式,針對(duì)復(fù)雜表格進(jìn)行可定制的多樣化處理,允許用戶根據(jù)自己的需求靈活選擇報(bào)表打印樣式和打印區(qū)域,滿足了多樣化的打印需要。
其中,步驟1包括以下步驟:
步驟1.1:讀入待打印的報(bào)表數(shù)據(jù);
步驟1.2:識(shí)別不同的待讀取報(bào)表數(shù)據(jù)類型,并采用相應(yīng)的讀取方式來(lái)讀取報(bào)表數(shù)據(jù);
步驟1.3:統(tǒng)一報(bào)表數(shù)據(jù)格式為Excel表格文件格式。
其中,步驟2包括以下步驟:
步驟2.1:識(shí)別報(bào)表數(shù)據(jù)的標(biāo)題、主欄、賓欄及內(nèi)容;
步驟2.2:設(shè)置待打印區(qū)域,并選擇打印樣式;
步驟2.3:設(shè)置打印紙張大小、紙張方向。
其中,打印信息包括報(bào)表數(shù)據(jù)、打印樣式、待打印區(qū)域和打印紙張信息。
其中,打印樣式包括主賓欄打印、自選區(qū)域打印、原樣打印、跳行打印和蝴蝶版打印。
如圖2所示,為本發(fā)明提供的一種智能打印系統(tǒng),該系統(tǒng)包括數(shù)據(jù)讀入及格式化模塊1、報(bào)表打印樣式設(shè)置模塊2、打印機(jī)控制模塊3;
數(shù)據(jù)讀入及格式化模塊1和打印機(jī)控制模塊3分別與所述報(bào)表打印樣式設(shè)置模塊2連接;
數(shù)據(jù)讀入及格式化模塊1用于讀入報(bào)表數(shù)據(jù)后,將報(bào)表數(shù)據(jù)的格式轉(zhuǎn)換為預(yù)設(shè)格式;
報(bào)表打印樣式設(shè)置模塊2用于識(shí)別報(bào)表數(shù)據(jù)并設(shè)置待打印區(qū)域、打印樣式和打印紙張信息,生成報(bào)表數(shù)據(jù)的打印信息;
打印機(jī)控制模塊3用于獲取對(duì)應(yīng)打印機(jī),將打印信息傳遞至打印機(jī)。
其中,報(bào)表打印樣式設(shè)置模塊2用于識(shí)別報(bào)表的標(biāo)題、主欄、賓欄及內(nèi)容,設(shè)置待打印區(qū)域,并選擇打印樣式,設(shè)置打印紙張大小、紙張方向,打印樣式包括主賓欄打印、自選區(qū)域打印、原樣打印、跳行打印和蝴蝶版打印。
其中,數(shù)據(jù)讀入及格式化模塊1用于讀入待打印報(bào)表的原始數(shù)據(jù),并識(shí)別不同的待讀取報(bào)表文件類型,采用相應(yīng)的讀取方式來(lái)讀取數(shù)據(jù)信息,最后將報(bào)表文件統(tǒng)一為Excel表格文件格式。
其中,打印信息包括報(bào)表數(shù)據(jù)、打印樣式、待打印區(qū)域和打印紙張信息。
其中,該系統(tǒng)還包括打印機(jī),打印機(jī)用于打印打印信息。
本系統(tǒng)的用戶界面包含Windows應(yīng)用程序客戶端和IE瀏覽器ActiveX插件兩種,以適用于不同類型的用戶,兩種用戶界面所包含的功能都是一致的,都包括文件選擇欄、打印區(qū)域設(shè)置欄、打印類型選擇欄等主要部分。
Windows應(yīng)用程序采用.Net Framework4.5支持庫(kù)來(lái)支持開發(fā),而IE瀏覽器插件用到了ActiveX技術(shù),需要支持該技術(shù)的瀏覽器內(nèi)核來(lái)支持使用。
數(shù)據(jù)讀入及格式化模塊1,對(duì)于待打印報(bào)表的原始數(shù)據(jù)進(jìn)行讀入,并將其統(tǒng)一為Excel表格形式,以便用戶接下來(lái)直觀地設(shè)置報(bào)表打印的樣式。該模塊自動(dòng)識(shí)別不同的待讀取文件類型,并采用相應(yīng)的讀取方式來(lái)獲取數(shù)據(jù)信息,并且在此過(guò)程中盡量保留原有數(shù)據(jù)樣式不變。
對(duì)于Excel表格文件,本系統(tǒng)調(diào)用.Net COM組件:Microsoft Excel15.0Object Library進(jìn)行文件的讀取操作。
對(duì)于WPS表格文件,本系統(tǒng)采用OLEDB的方式直接按文件流讀取WPS格式的表格文件。
對(duì)于CSV和TXT文件,本系統(tǒng)采用文本文件讀入的方法將其讀入到內(nèi)存中,再通過(guò)字符串格式化方法將其數(shù)據(jù)恢復(fù)為表格格式。
在對(duì)格式化后的報(bào)表內(nèi)容打印以前,系統(tǒng)會(huì)根據(jù)表格樣式等信息來(lái)自動(dòng)識(shí)別報(bào)表的標(biāo)題、主欄、賓欄及內(nèi)容,默認(rèn)方式是根據(jù)單元格顏色來(lái)識(shí)別表頭,即自上而下、自左向右地逐行列檢測(cè),將首先遇到的連續(xù)帶顏色多行或多列視為報(bào)表的主欄和賓欄。如果識(shí)別有誤,用戶也可以在控制界面手工輸入主欄、賓欄對(duì)應(yīng)的起始單元格和結(jié)束單元格行列數(shù)。
如圖3所示,為主賓欄打印示意圖,這種打印樣式是指對(duì)于一張長(zhǎng)或?qū)挸^(guò)一頁(yè)的巨大報(bào)表進(jìn)行打印時(shí),使每個(gè)單獨(dú)的頁(yè)面上都保留其對(duì)應(yīng)的主欄(縱向表頭)和賓欄(橫向表頭),便于數(shù)據(jù)查看。進(jìn)行主賓欄打印之前,選擇主欄打印還是賓欄打印,其中主欄打印是指優(yōu)先打印完當(dāng)前部分主欄所對(duì)應(yīng)的全部賓欄內(nèi)容,賓欄打印是指優(yōu)先打印完當(dāng)前部分賓欄所對(duì)應(yīng)的全部主欄內(nèi)容。
自選區(qū)域打印,是指只打印用戶所選區(qū)域內(nèi)的部分報(bào)表內(nèi)容。這里要求用戶所選區(qū)域必須是一個(gè)連續(xù)的整塊,不能隔行、隔列或扣除個(gè)別單元格等。在進(jìn)行自選區(qū)域打印時(shí),系統(tǒng)將格式化后的報(bào)表內(nèi)容生成一個(gè)臨時(shí)的打印用Excel表格,以供用戶直觀地選擇待打印的報(bào)表區(qū)域,用戶通過(guò)在Excel表格內(nèi)框選待打印內(nèi)容區(qū)域即可完成區(qū)域選擇,選定并確認(rèn)后,系統(tǒng)自動(dòng)將選定區(qū)域的內(nèi)容以及對(duì)應(yīng)的主賓欄內(nèi)容保留,將其他多余部分刪去,構(gòu)成用戶最終需要打印的報(bào)表。用戶也可以選擇輸入行列號(hào)的方式,在系統(tǒng)內(nèi)直接填寫自選區(qū)域的起始、終止單元格的行、列,系統(tǒng)將自動(dòng)定位選定區(qū)域,其他操作與前者相同。
原樣打印,是指按照原表內(nèi)容,不做改變地直接逐頁(yè)打印。這是為了滿足用戶直接打印的需要,這種打印樣式不需要用戶提供其他額外參數(shù)。
跳行打印,是指只打印選定的某些行與某些列交叉點(diǎn)上的單元格內(nèi)的內(nèi)容。這種打印樣式需要在Excel表格上手動(dòng)制定待打印內(nèi)容所屬的行、列,選擇完畢后系統(tǒng)將自動(dòng)保留這些行、列交叉位置的部分?jǐn)?shù)據(jù),保留它們對(duì)應(yīng)的主欄和賓欄內(nèi)容,并將其余報(bào)表內(nèi)容全部刪除,構(gòu)成最終需要打印的報(bào)表。如果用戶僅選取了某些行或者某些列,亦或是所選定行列交叉點(diǎn)在表單內(nèi)容區(qū)域之外,則會(huì)給出相應(yīng)報(bào)錯(cuò)提示,并要求重新輸入。
如圖4所示,為蝴蝶版打印示意圖,是指以蝴蝶打印的方式排版時(shí)所需的打印樣式,即左右兩頁(yè)合起來(lái)作為一個(gè)整頁(yè)進(jìn)行排版。這種打印樣式無(wú)需用戶提供參數(shù),系統(tǒng)自動(dòng)將原始報(bào)表數(shù)據(jù)進(jìn)行整理,默認(rèn)按主欄打印的方式排布頁(yè)面,每?jī)身?yè)的內(nèi)容中,左側(cè)頁(yè)帶有主欄,右側(cè)頁(yè)不帶主欄。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。