一種單據報表套打方法
【技術領域】
[0001]本發明涉及一種單據報表套打方法。
【背景技術】
[0002]報表設計是企業信息化中的重要部分,據統計,企業應用開發的60%工作都是制作各類報表,而其中,單據報表即票據在其中占據重要的地位。單據報表的打印方式分為套打和非套打,套打指在印刷好的單據上,將打印內容準確無誤地打印到指定的位置;而非套打指在空白的單據打印紙上打印出單據報表包括表格的全部內容。傳統的報表工具,需要用尺子量出數據在套打背景上的位置,然后再屏幕上根據尺寸定位數據所在單元格的位置,相當繁瑣,容易出錯。當前單據報表套打主流的方案是報表設計時將原始單據的掃描圖作為單據報表背景,再在其需要打印內容的位置放上相應的數據庫字段,打印時僅在印刷好的單據上打印從數據庫獲取的數據,若希望使用非套打模式,則將原始單據的掃描圖作為背景圖打印在單據上。
[0003]目前國內主流的報表設計工具,其設計單據報表的過程如下:1)將原始單據掃描成圖片,并保存到指定文件夾;2)在報表設計器中新建單據報表,并將單據掃描圖作為紙張背景,明確單據打印時是否打印單據掃描背景圖;3)設計報表;4)保存報表到模板文件;5)用戶在瀏覽器中瀏覽報表并執行套打。存在如下缺陷:
[0004]I)單據報表套打還是非套打需要由報表設計人員在設計時指定,報表用戶在瀏覽報表時無法選擇;
[0005]2)單據報表非套打通過將原始單據的掃描圖作為背景圖打印在單據上實現,容易出現字體模糊的問題。
【發明內容】
[0006]為解決上述問題本發明提供了一種單據報表套打方法。
[0007]本發明提供的技術方案是:一種單據報表套打方法,包括如下步驟:
[0008]步驟一):將原始單據掃描為圖片:將原始單據掃描為原始單據圖片,所述原始單據圖片與原始單據大小相同;
[0009]步驟二)新建原始單據頁面:創建原始單據頁面,所述原始單據頁面為空白頁面;
[0010]步驟三)導入原始單據圖片至原始單據頁面:將原始單據圖片導入原始單據頁面作為背景,調整原始單據頁面的大小至與原始單據圖片完全重合;
[0011]步驟四)設計原始單據頁面:在原始單據頁面上,設置與背景相同的表格邊框及靜態文字,使原始單據頁面與原始單據完全一致;
[0012]步驟五)設計實際單據頁面:創建空白單據頁面,即實際單據頁面,然后將原始單據頁面中背景圖外的內容全部復制到實際單據頁面,將數據庫字段和報表函數放置到實際單據頁面的對應位置;
[0013]步驟六)保存報表模板:將原始單據頁面、實際單據頁面、實際單據頁面與原始單據頁面的差異、原始單據圖片和檢索數據的查詢語句保存到報表模板的不同內容節點,然后保存報表模板;
[0014]步驟七)瀏覽報表:在報表服務器中,用報表數據查詢語句檢索需要的數據,將其填充到實際單據頁面中;
[0015]步驟八)報表打印:選擇套打模式或非套打模式,若選擇非套打模式則直接打印實際單據頁面;若選擇套打,則將通過報表數據查詢語句檢索到的數據及函數表達式求值結果填充到實際單據頁面與原始單據頁面的差異頁面中的對應位置,然后打印此差異頁面。
[0016]進一步的改進,所述原始單據頁面和實際單據頁面均包含若干行與若干列,所述步驟四)包含如下步驟:
[0017]I)調整原始單據頁面的列寬與行高,使原始單據圖片中的每個單元格,正好包含原始單據頁面上的一個或多個單元格;
[0018]2)合并單元格,合并原始單據頁面上的單元格,使背景中的每個單元格,對應包含原始單據頁面上的一個單元格,即若原始單據背景圖中單據表格的某個單元格包含原始單據頁面上的多個單元格,則將這多個單元格合并,使得合并后的單元格與背景圖中的單元格完全重合;
[0019]3)設置表格及單元格邊框:根據原始單據圖片上的表格及單元格的邊框,為原始單據頁面上對應的單元格設置相同的邊框;
[0020]4)添加靜態文字:在原始單據頁面上添加與原始單據圖片的文字對應的位置添加相同的原始單據頁面文字;所述原始單據頁面文字的字體及對齊方式與原始單據圖片的文字一致。
[0021]進一步的改進,所述原始單據頁面和實際單據頁面均包含若干行與若干列,所述步驟五)包含如下步驟:
[0022]a.創建第二工作表,即實際單據頁面;
[0023]b.查找原始單據頁面實際使用區域:查找原始單據頁面中的最后單元格,獲取其行號和列號,根據此單元格的行號和列號確定實際單據頁面需要使用的區域的行數和列數;
[0024]c.調整行高和列寬:將實際單據頁面中用到的區域的行的高度和列的寬度設置為與原始單據頁面對應相同;
[0025]d.處理合并單元格:搜索原始單據頁面中有效使用區中的每個單元格,若該單元格為合并單元格,則找出該合并單元格包含的單元格集合,并在實際單據頁面中將對應的單元格集合做合并處理;
[0026]e.復制單元格邊框:搜索原始單據頁面有效使用區中的每個單元格,若有邊框,則在實際單據頁面中對應單元格設置相同的邊框;
[0027]f.復制文本:搜索原始單據頁面有效使用區中的每個單元格,若有文本,則在實際單據頁面中對應單元格設置相同的文本;
[0028]g.設置數據庫字段及報表函數:從數據源中獲取數據庫字段或者報表函數放置到實際單據頁面的對應的位置。
[0029]進一步的改進,所述原始單據頁面和實際單據頁面均包含若干行與若干列,所述步驟六)中,所述報表模板保存為XML文件,原始單據頁面、實際單據頁面、實際單據頁面與原始單據頁面的差異保存為所述XML文件中的一個區域節點,每個區域節點包含若干個行節點,所述行節點對應于報表模板中的行,每個行節點包含若干單元格節點,所述單元格節點對應于報表模板中的單元格,每個單元格的屬性包含寬度、邊框、字體、填充色及文本等,所述單元格的屬性由報表模板中相應單元格的設置決定;原始單據頁面和實際單據頁面的區域子節點通過搜索報表模板的每個單元格得到;實際單據頁面與原始單據頁面的差異以實際單據頁面的區域子節點為基礎,將實際單據頁面的每個單元格,減去出現在原始單據對應單元格子節點中的所有屬性,即得到實際單據工作表與原始單據工作表的差異的區域子節點;所述原始單據圖片存在指定目錄下,報表模板中保存原始單據圖片文件名,所述數據查詢語句也以一個節點的形式保存在報表模板中。
[0030]進一步的改進,在所述步驟八)中,在報表瀏覽界面上設置復選框以指明是否套打,或者在報表瀏覽界面上分別設置套打按鈕和非套打按鈕,或者分別設置套打菜單和非套打菜單。
[0031]本發明具有如下優點:
[0032]I)單據報表套打還是非套打可以由報表用戶在瀏覽報表時選擇,增加了單據打印的靈活性;
[0033]2)單據報表非套打無需使用原始單據的掃描圖作為背景圖,保證了單據報表的打印質量。
【附圖說明】
[0034]當結合附圖考慮時,通過參照下面的詳細描述,能夠更完整更好地理解本發明以及容易得知其中許多伴隨的優點,但此處所說明的附圖用來提供對本發明的進一步理解,構成本發明的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定,其中:
[0035]圖1單據報表套打/非套打設計流程示意圖;
[0036]圖2EXCEL報表系統中原始單據設計過程示意圖;
[0037]圖3實際單據設計流程示意圖;
[0038]圖4EXCEL報表系統中設計實際單據過程示意圖。
【具體實施方式】
[0039]本發明結合實施例詳細描述如下:
[0040]本發明實施例的報表設計器采用VSTO技術基于EXCEL開發,EXCEL表格界面即為報表系統的報表設計界面。
[0041]步驟一)將原始單據掃描為圖片:用圖像軟件將掃描得到的原始單據圖片大小調整為與原始單據相同。
[0042]步驟二)新建原始單據頁面:用報表設計器創建一個空白工作薄,即原始單據頁面。
[0043]步驟三)導入原始單據圖片至原始單據頁面:導入原始單據圖片至原始單據頁面作為原始單據頁面的背景,將原始單據圖片的左上角與EXCEL表格區域的左上角對齊。
[0044]步驟四)設計原始單據頁面:如圖2所示包含如下步驟:
[0045]I)調整原始單據頁面的列寬與行高,使原始單據圖片的每個單元格,正好包含原始單據工作表上的一個或多個單元格;
[0046]2)合并單元格,合并原始單據頁面上的單元格,使背景中的每個單元格,對應包含原始單據頁面上的一個單元格,即若原始單據背景圖中單據表格的某個單元格包含原始單據工作表上的多個單元格,則將這多個單元格合并,使得合并后的單元格與背景圖中的單元格完全重合;
[0047]3)設置表格及單元格邊框:根據原始單據圖片上的表格及單元格的邊框,為原始單據頁面上對應的單元格設置相同的邊框;
[0048]4)添加靜態文字:在原始單據頁面上添加與原始單據圖片的文字對應的位置添加相同的原始單據頁面文字;所述原始單據頁面文字的字體及對齊方式與原始單據圖片的文字一致。
[0049]步驟五)設計實際單據頁面:創建空白單據頁