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