王香菊
(江蘇省江陰中等專業(yè)學校 江蘇 江陰 214400)
利用剪貼板實現(xiàn)不同應用程序間數(shù)據(jù)轉換的設計方案
王香菊
(江蘇省江陰中等專業(yè)學校 江蘇 江陰 214400)
剪貼板是windows操作系統(tǒng)提供的一個暫存數(shù)據(jù)的內存區(qū)域, 剪切板可以保存的數(shù)據(jù)類型有文本類型、數(shù)字類型、圖片類型、視頻類型等,也有特殊格式的數(shù)據(jù)類型,因為有了剪貼板使得在各種應用程序之間傳遞和共享信息成為了可能。通常我們會使用剪切、復制與粘貼操作在剪貼板中存取數(shù)據(jù),而不會主動去控制剪貼板的內容,但在特殊情況下,如果主動利用和控制剪貼板數(shù)據(jù),將會大幅提高工作效率。本文主要介紹一種利用剪貼板設計一種程序開發(fā)方案以實現(xiàn)自動獲取剪貼板內容并自動轉換數(shù)據(jù)。
剪貼板;數(shù)據(jù)交換;瀏覽器;應用程序B/S架構
在日常工作中通常會遇到這樣的問題,客戶要求將基于B/S架構的應用程序中的相關數(shù)據(jù)平移到新系統(tǒng)中,但由于原系統(tǒng)的數(shù)據(jù)庫并不掌握在用戶手中,且原系統(tǒng)也并無數(shù)據(jù)導出功能,從而難以滿足用戶對新系統(tǒng)應用的需要。那么,如何完整且快速的重現(xiàn)原系統(tǒng)數(shù)據(jù)并使之能夠平移到新系統(tǒng)中?我們知道基于B/S架構的應用程序對數(shù)據(jù)信息的顯示是以瀏覽器為主的,由于原系統(tǒng)對數(shù)據(jù)的處理和顯示方法無法控制,那么唯一的辦法就是將所需要的數(shù)據(jù)逐一復制出來。通常的做法是利用剪貼板完成逐個數(shù)據(jù)項的復制和粘貼工作,但這樣的方式對于單條記錄的數(shù)據(jù)還是可以的,有時甚至可以直接對照瀏覽器中顯示的數(shù)據(jù)重新錄入,但若數(shù)據(jù)記錄過多,這樣的方法明顯就不可取了。
首先想到的是可以將瀏覽器中顯示的所有信息先全部復制到剪貼板中,然后再將剪貼板中的有用信息轉存到電子表格中,再通過電子表格導入到新系統(tǒng)中。當然復制出來的數(shù)據(jù)要滿足新系統(tǒng)對數(shù)據(jù)組織形式和格式的要求,就一定需要對其進行適當?shù)奶幚?,且這一過程要能夠按要求自動實現(xiàn)或者在少量人工干預的情況下自動實現(xiàn)才可以提高工作效率。
目前IT業(yè)有多種使用剪貼板進行數(shù)據(jù)處理加工的手段,其中對數(shù)據(jù)、圖片的處理最多。到百度上搜索“剪貼板應用”,可以搜索到162萬條結果,大部分應用是用來解決辦公上的問題,這些都屬于簡單應用范疇。如果加上關鍵詞“基于Java”,那么搜索結果就僅僅只有1萬條左右。目前剪貼板的應用主要有以下幾個方面:
(1)利用剪貼板進行數(shù)據(jù)交換。
(2)監(jiān)視剪貼板的數(shù)據(jù)。
(3)創(chuàng)建多個剪貼板。
(4)判斷剪貼板數(shù)據(jù)類型和數(shù)據(jù)格式,如判斷圖片數(shù)據(jù)和文本數(shù)據(jù)等。
通過對瀏覽器顯示的數(shù)據(jù)進行復制后的內容進行分析,發(fā)現(xiàn)原始數(shù)據(jù)存在以下特點:(1)無效字符紊亂了原始數(shù)據(jù);(2)有效數(shù)據(jù)長度不一;(3)無意義的數(shù)據(jù)太多;(4)數(shù)據(jù)間可以找到明顯的數(shù)據(jù)界限。
據(jù)此分析,要實現(xiàn)不同平下的數(shù)據(jù)共享,首先需要對無效字符和無意義的數(shù)據(jù)進行處理,其次,由于有效數(shù)據(jù)長度不一,故不能通過數(shù)據(jù)長度進行截取,,但可以依據(jù)數(shù)據(jù)之間存在的明顯界限符剔除無用數(shù)據(jù)和信息來獲取所有可用的數(shù)據(jù)。
本程序的設計思路主要是通過監(jiān)控剪貼板有無數(shù)據(jù)和有數(shù)據(jù)時進行數(shù)據(jù)處理并轉存至電子表格、無數(shù)據(jù)時等待一個固定時間的過程反復,程序結束后,可將電子表格中的數(shù)據(jù)導入到新系統(tǒng)中,從而實現(xiàn)舊系統(tǒng)中的數(shù)據(jù)準確無誤地進入新系統(tǒng)。程序設計流程如下:
(1)系統(tǒng)初始化流程,主要對數(shù)據(jù)界限進行定義、初始化電子表格首行字段內容。同時需要在程序中對電子表格文件進行創(chuàng)建、初始化工作等。
(2)數(shù)據(jù)處理流程,主要對原始數(shù)據(jù)進行處理以提取有用數(shù)據(jù)。為獲得正確的數(shù)據(jù)處理結果,可增加用戶隨時調整數(shù)據(jù)界限以及將提取的數(shù)據(jù)顯示給用戶的功能。
(3)數(shù)據(jù)處理過程的可視化設計流程,將處理后的數(shù)據(jù)記錄到Excel文件中并實時顯示。
用戶界面是應用程序與用戶進行交互的窗口,設計的內容包括:
(1)界限定義塊:將用戶定義的數(shù)據(jù)界限內容按順序記錄在ArrayList數(shù)組集合中;
(2)數(shù)據(jù)測試塊:根據(jù)用戶定義的內容和用戶復制的內容,進行數(shù)據(jù)測試,將測試結果顯示在工作表的相應單元格中;
(3)文件對話框:用于用戶選擇保存Excel文件的名稱;
(4)正式運行塊:用戶正式運行系統(tǒng),通過剪貼板、電子表格和瀏覽器進行數(shù)據(jù)處理。
在Java應用中,利用剪貼板進行數(shù)據(jù)交換可使用的對象如下:
(1)Clipboard:類,實現(xiàn)剪切/復制/粘貼操作并傳輸數(shù)據(jù)的機制;
(2)Transferable:接口,是一個用于不同存儲介質間數(shù)據(jù)傳輸?shù)慕涌?,要真正實現(xiàn)從不同存儲介質間的數(shù)據(jù)傳輸,則必須實現(xiàn)該接口;
(3)DataFlavor:類,是封裝在Transferable接口中的類,用來指定該對象傳輸數(shù)據(jù)時的數(shù)據(jù)格式,就是說是以字節(jié)形式傳輸還是以字符形式傳輸更或者是以圖片數(shù)據(jù)的形式傳輸;
(4)StringSelection:類,實現(xiàn)了Transferable接口的類,該類傳輸數(shù)據(jù)時的格式已經(jīng)確定為stringFlavor;
(5)ClipboardOwner:接口類,用于在剪貼板中的原始數(shù)據(jù)被替換時發(fā)出通知。
根據(jù)需求,程序體分別定義了下面的模塊:
SetXMMC:用于完成設置數(shù)據(jù)界限;
InitXLSFile:用于完成Excel文件的初始化工作;
CloseXLSFile:用于完成對Excel文件的保存和關閉工作;
tmMainTimer:時間控制,每0.2秒循環(huán)控制監(jiān)控剪貼板數(shù)據(jù);
StartAccess:正式數(shù)據(jù)處理流程,完成需求中的數(shù)據(jù)處理;
TestAccess:測試數(shù)據(jù)處理流程,完成需求中的數(shù)據(jù)模擬處理,并顯示結果。
程序運行環(huán)境為操作系統(tǒng):WindowsXP、Windows7、Windows10等;
Office版 本:Office2007、Office2010、Office2013;
瀏覽器:IE 9、IE 11、搜狗瀏覽器、Google瀏覽器等;
效率檢測:原系統(tǒng)數(shù)據(jù)量近4千條記錄,未使用該軟件進行人工復制約需45人日;使用該軟件后實際僅需要2人日。
利用剪貼板是在不同應用程序間進行數(shù)據(jù)交換的重要手段之一,本程序即是借助于剪貼板實現(xiàn)了快速的數(shù)據(jù)轉換,不過因限于數(shù)據(jù)在瀏覽器中的顯示方式,本程序需要一定的人工干預,即由用戶反復單擊“基礎信息”打開“查看會員基礎信息”頁面后,連續(xù)進行全選、復制和粘貼操作后而實現(xiàn)數(shù)據(jù)自動轉換的。
[1]李朝中.一種剪貼板控制的實現(xiàn)[J].電腦編程技巧與維護,2015,(13)
[2]何音建.剪貼板編程以及在Delphi中的應用[J].電腦編程技巧與維護,1998,(02).
TP316 【文獻標識碼】A 【文章編號】1009-5624(2018)02-0097-02