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