本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種Word內(nèi)嵌表格生成方法和裝置。
背景技術(shù):
隨著辦公電子化的發(fā)展,越來越多的文件需要使用電子形式進(jìn)行編輯。Word是常用的一種文字處理器,通常為了幫助用戶快速生成特定類型的Word文檔,會(huì)在Word中內(nèi)置包含固定格式設(shè)置和版式設(shè)置的模板文件,也就是Word模板,但傳統(tǒng)的Word模板無法對(duì)內(nèi)嵌表格進(jìn)行替換。另外,還可以通過編輯Word元素生成Word文檔,Word元素是指Word文檔中的文字、圖片、表格等信息。但在樣式復(fù)雜或頻繁變動(dòng)的Word文檔中,需要定義大量的Word元素并且需要根據(jù)不同需求更新維護(hù),降低了Word的編寫效率。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)上述在樣式復(fù)雜或頻繁變動(dòng)的Word文檔中生成內(nèi)嵌表格時(shí)Word文檔的編寫效率較低的問題,提供一種Word內(nèi)嵌表格生成方法和裝置。
一種Word內(nèi)嵌表格生成方法,包括:
讀取預(yù)先定義的Word模板中的每一個(gè)元素;
判斷元素是否為替換標(biāo)志;
當(dāng)讀取的元素為替換標(biāo)志時(shí),根據(jù)預(yù)先建立的替換標(biāo)志中的預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系,查詢并獲取替換標(biāo)志對(duì)應(yīng)的替換表;
將獲取的替換表與替換標(biāo)志進(jìn)行替換,生成內(nèi)嵌表格。
在其中一個(gè)實(shí)施例中,預(yù)先定義的Word模板為帶有替換標(biāo)志的Word模板,替換標(biāo)志為帶有所述預(yù)設(shè)字符的表格。
在其中一個(gè)實(shí)施例中,在判斷元素是否為替換標(biāo)志的步驟包括:判斷讀取的元素是否為表格;當(dāng)讀取的元素為表格時(shí),讀取表格中的文字;判斷表格中的文字是否為預(yù)設(shè)字符。
在其中一個(gè)實(shí)施例中,將獲取的替換表與替換標(biāo)志進(jìn)行替換,包括:將獲取的替換表轉(zhuǎn)換成POI可識(shí)別表格;將POI可識(shí)別表格與替換標(biāo)志進(jìn)行替換。
在其中一個(gè)實(shí)施例中,Word內(nèi)嵌表格生成方法還包括:當(dāng)Word模板中的所有帶替換標(biāo)志的元素替換完成時(shí),將替換了替換表的Word模板生成Word文檔。
一種Word內(nèi)嵌表格生成裝置,包括:
讀取模塊,用于讀取預(yù)先定義的Word模板中的每一個(gè)元素;
判斷模塊,用于判斷元素是否為替換標(biāo)志;
查詢模塊,用于當(dāng)讀取的元素為替換標(biāo)志時(shí),根據(jù)預(yù)先建立的替換標(biāo)志中的預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系,查詢并獲取替換標(biāo)志對(duì)應(yīng)的替換表;
替換模塊,用于將獲取的替換表與替換標(biāo)志進(jìn)行替換,生成內(nèi)嵌表格。
在其中一個(gè)實(shí)施例中,預(yù)先定義的Word模板為帶有替換標(biāo)志的Word模板,替換標(biāo)志為帶有預(yù)設(shè)字符的表格。
在其中一個(gè)實(shí)施例中,判斷模塊還用于判斷讀取的元素是否為表格,當(dāng)讀取的元素為表格時(shí),讀取表格中的文字;判斷表格中的文字是否為預(yù)設(shè)字符。
在其中一個(gè)實(shí)施例中,替換模塊用于將獲取的替換表轉(zhuǎn)換成POI可識(shí)別表格,將POI可識(shí)別表格與替換標(biāo)志進(jìn)行替換。
在其中一個(gè)實(shí)施例中,Word內(nèi)嵌表格生成裝置還包括:生成模塊,用于當(dāng)Word模板中的所有帶替換標(biāo)志的元素替換完成時(shí),將替換了替換表的Word模板生成Word文檔。
上述Word內(nèi)嵌表格生成方法和裝置,通過在Word模板中設(shè)置替換標(biāo)志以及預(yù)先建立的替換標(biāo)志與替換表之間的對(duì)應(yīng)關(guān)系,能夠通過替換標(biāo)志直接獲取對(duì)應(yīng)的替換表進(jìn)行替換,從而生成帶有內(nèi)嵌表格的Word文檔。不需要定義大量的Word元素更新維護(hù)內(nèi)嵌表格,提高了Word文檔的編寫效率。
附圖說明
圖1為一個(gè)實(shí)施例中Word內(nèi)嵌表格生成方法流程圖;
圖2為另一個(gè)實(shí)施例中Word內(nèi)嵌表格生成方法流程圖;
圖3為一個(gè)實(shí)施例中Word內(nèi)嵌表格生成方法具體流程圖;
圖4為一個(gè)實(shí)施例中Word內(nèi)嵌表格替換示意圖;
圖5為另一個(gè)實(shí)施例中Word內(nèi)嵌表格替換示意圖;
圖6為一個(gè)實(shí)施例中Word內(nèi)嵌表格生成裝置的結(jié)構(gòu)圖;
圖7為另一個(gè)實(shí)施例中Word內(nèi)嵌表格生成裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,提供一種Word內(nèi)嵌表格生成方法,包括:
步驟110,讀取預(yù)先定義的Word模板中的每一個(gè)元素。
本實(shí)施例中,Word模板是指內(nèi)置包含固定格式設(shè)置和版式設(shè)置的模板文件。元素是指構(gòu)成Word模板的表格、字體、行間距、頁(yè)眉等。預(yù)先根據(jù)需要定義Word模板,并將該模板緩存到內(nèi)存中,在需要使用模板建立Word文檔時(shí),對(duì)模板中的每一個(gè)元素進(jìn)行讀取,根據(jù)讀取的元素獲取對(duì)應(yīng)的內(nèi)容。
步驟120,判斷讀取的元素是否為替換標(biāo)志。
本實(shí)施例中,預(yù)先在Word模板中需要替換或者需要生成表格的位置設(shè)置替換標(biāo)志。這里所說的替換標(biāo)志是指能夠與替換表進(jìn)行替換的標(biāo)志,替換標(biāo)志中帶有預(yù)設(shè)字符用來標(biāo)識(shí)替換標(biāo)志并與替換表建立對(duì)應(yīng)關(guān)系。對(duì)讀取的Word模板中的元素進(jìn)行判斷,判斷是否是預(yù)設(shè)的替換標(biāo)志。
步驟130,當(dāng)讀取的元素為替換標(biāo)志時(shí),根據(jù)預(yù)先建立的替換標(biāo)志中的預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系,查詢并獲取替換標(biāo)志對(duì)應(yīng)的替換表。
本實(shí)施例中,替換表是指系統(tǒng)自動(dòng)生成的、可以用來取代替換標(biāo)志的表格。預(yù)先建立替換標(biāo)志中的預(yù)設(shè)字符與替換表之間的對(duì)應(yīng)關(guān)系,并將該對(duì)應(yīng)關(guān)系進(jìn)行保存,也可以將該對(duì)應(yīng)關(guān)系生成對(duì)應(yīng)關(guān)系表并且該對(duì)應(yīng)關(guān)系表能夠根據(jù)用戶需要不斷的更新維護(hù)。上述對(duì)應(yīng)關(guān)系或者對(duì)應(yīng)關(guān)系表可以保存在數(shù)據(jù)庫(kù)中,當(dāng)需要獲取對(duì)應(yīng)的替換表時(shí),可以將該對(duì)應(yīng)關(guān)系從數(shù)據(jù)庫(kù)讀取到內(nèi)存中。當(dāng)判斷讀取到Word中的元素為替換標(biāo)志時(shí),獲取預(yù)先建立并存儲(chǔ)的對(duì)應(yīng)關(guān)系,根據(jù)讀取到的替換標(biāo)志查詢并獲取該替換標(biāo)志對(duì)應(yīng)的替換表。
步驟140,將獲取的替換表與替換標(biāo)志進(jìn)行替換,生成內(nèi)嵌表格。
本實(shí)施例中,根據(jù)讀取到的替換標(biāo)志在對(duì)應(yīng)表中獲取對(duì)應(yīng)的替換表后,將獲取的替換表與Word模板中讀取到的替換標(biāo)志進(jìn)行替換,生成Word模板的內(nèi)嵌表格。
本實(shí)施例中,預(yù)先在Word模板中建立替換標(biāo)志,并預(yù)先建立替換標(biāo)志與替換表之間的對(duì)應(yīng)關(guān)系,通過讀取Word模板中的替換標(biāo)志,能夠獲取替換標(biāo)志中的預(yù)設(shè)字符,并根據(jù)預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系直接獲取對(duì)應(yīng)的替換表,并將替換標(biāo)志與對(duì)應(yīng)的替換表進(jìn)行替換,從而在需要替換或生成表格的位置生成內(nèi)嵌表格。不需要定義大量的Word元素更新維護(hù)內(nèi)嵌表格,提高了Word文檔的編寫效率。
如圖2所示,在一個(gè)實(shí)施例中,提供一種Word內(nèi)嵌表格生成方法,包括:
步驟210,讀取預(yù)先定義的帶有預(yù)設(shè)字符的Word模板中的每一個(gè)元素。
本實(shí)施例中,預(yù)先定義Word模板,Word模板為帶有替換標(biāo)志的Word模板,且用帶有預(yù)設(shè)字符的表格作為替換標(biāo)志。在一個(gè)Word模板中可能需要插入多個(gè)不同的內(nèi)嵌表格,因此需要對(duì)這些表格進(jìn)行區(qū)分,通過設(shè)置不同的預(yù)設(shè)字符來區(qū)分不同的表格。
步驟220,判斷讀取的元素是否為表格。
本實(shí)施例中,若要在Word模板中生成內(nèi)嵌表格需要在預(yù)先建立Word模板時(shí)預(yù)設(shè)可以插入表格的版式,即在預(yù)先建立Word模板時(shí)預(yù)先插入表格并且在表格中加入預(yù)設(shè)字符,表示該位置可以與替換表進(jìn)行替換生成內(nèi)嵌表格。因此,在讀取Word模板中的元素時(shí),首先判斷元素是不是表格,如果不是表格說明該位置不能插入表格,如果是表格則可以插入表格形式。
步驟230,當(dāng)讀取的元素為表格時(shí),讀取表格中的字符。
本實(shí)施例中,當(dāng)讀取到的元素為表格時(shí),說明Word模板中對(duì)應(yīng)的該元素可以替換為表格。但具體是不是需要替換的表格以及替換哪一個(gè)替換表,需要進(jìn)一步讀取表格中的字符來確定。
步驟240,判斷表格中的字符是否為預(yù)設(shè)字符。
本實(shí)施例中,預(yù)先建立預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系表并存儲(chǔ)在數(shù)據(jù)庫(kù)中,當(dāng)需要獲取對(duì)應(yīng)的關(guān)系表時(shí),從數(shù)據(jù)庫(kù)中將對(duì)應(yīng)關(guān)系表讀取到內(nèi)存中。讀取表格中的字符,通過將讀取的字符在預(yù)先存儲(chǔ)在數(shù)據(jù)庫(kù)中的對(duì)應(yīng)關(guān)系表中的預(yù)設(shè)字符比較,判斷讀取的字符是否是預(yù)設(shè)字符。
步驟250,當(dāng)讀取的元素為預(yù)設(shè)字符時(shí),根據(jù)預(yù)先建立的預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系,查詢并獲取替換標(biāo)志對(duì)應(yīng)的替換表。
本實(shí)施例中,預(yù)先在系統(tǒng)中生成替換表,并將不同的替換表與不同的預(yù)設(shè)字符建立對(duì)應(yīng)關(guān)系,生成對(duì)應(yīng)關(guān)系表預(yù)先存儲(chǔ)在數(shù)據(jù)庫(kù)或者相關(guān)文件中,這里所說的對(duì)應(yīng)關(guān)系表可根據(jù)用戶需要不斷更新維護(hù)。當(dāng)讀取到的表格中的字符在預(yù)先存儲(chǔ)的對(duì)應(yīng)關(guān)系表中查詢到相同的字符時(shí),說明讀取到的字符為預(yù)設(shè)字符,根據(jù)預(yù)先建立的對(duì)應(yīng)關(guān)系表查詢對(duì)應(yīng)的替換表,并從系統(tǒng)中獲取該對(duì)應(yīng)的替換表。
步驟260,將獲取的替換表與帶有預(yù)設(shè)字符的表格進(jìn)行替換,生成內(nèi)嵌表格。
本實(shí)施例中,根據(jù)預(yù)設(shè)字符在對(duì)應(yīng)關(guān)系表中獲取對(duì)應(yīng)的替換表,然后將獲取的替換表與Word模板中帶有預(yù)設(shè)字符的表格進(jìn)行替換,將用戶需要的表格嵌入到Word模板中,生成Word內(nèi)嵌表格。
本實(shí)施例中,通過在Word文檔中插入內(nèi)嵌表格生成Word模板,實(shí)現(xiàn)了可以在Word中插入內(nèi)嵌表格,并且使用預(yù)設(shè)字符用來區(qū)分不同的表格并與替換表建立對(duì)應(yīng)關(guān)系,并且可以根據(jù)預(yù)設(shè)字符直接獲取對(duì)應(yīng)的替換表,對(duì)于變化頻繁或樣式復(fù)雜的Word模板能夠比較靈活的直接獲取替換表生成內(nèi)嵌表格,提高了Word文檔的編寫效率。
在一個(gè)實(shí)施例中,將獲取的替換表格與替換標(biāo)志進(jìn)行替換,包括:將獲取的替換表轉(zhuǎn)換成POI可識(shí)別表格;將POI可識(shí)別表格與替換標(biāo)志進(jìn)行替換。
本實(shí)施例中,POI是一種Java(一種面向?qū)ο蟮木幊陶Z(yǔ)言)文本抽取API(應(yīng)用程序調(diào)用接口),能夠?yàn)镴ava文本提供讀寫Word的功能。因此根據(jù)替換標(biāo)志中的預(yù)設(shè)字符獲取對(duì)應(yīng)的替換表之后,將替換表格與對(duì)應(yīng)的Word模板中的替換標(biāo)志進(jìn)行替換時(shí),可以先將替換表轉(zhuǎn)換成POI可識(shí)別表格,便于將替換表格讀取到Word模板中,從而實(shí)現(xiàn)與對(duì)應(yīng)的替換標(biāo)志進(jìn)行替換。
在一個(gè)實(shí)施例中,當(dāng)Word模板中的所有帶替換標(biāo)志的元素替換完成時(shí),將替換了所述替換表的Word模板生成Word文檔。
本實(shí)施例中,對(duì)Word模板中的每一個(gè)元素進(jìn)行讀取并判斷,以完成對(duì)Word模板中所有替換標(biāo)志的替換,通過判斷讀取的Word模板中的元素是否為空,判斷是否完成對(duì)所有替換標(biāo)志的替換,當(dāng)讀取到Word模板中的元素為空時(shí)說明替換完成,則將完成替換的Word模板生成Word文檔,即完成了該Word文檔的內(nèi)嵌表格的生成。
在其他實(shí)施例中,也可以通過判斷替換標(biāo)志的數(shù)量來判斷是否完成了所有替換標(biāo)志的替換,如獲取在Word模板中預(yù)設(shè)的替換標(biāo)志的數(shù)量,讀取Word模板元素的過程中記錄獲取到的替換標(biāo)志的數(shù)量,當(dāng)讀取到的數(shù)量等于預(yù)設(shè)替換標(biāo)志的數(shù)量時(shí),即不再對(duì)Word模板中的其他元素進(jìn)行讀取,將Word模板生成帶有內(nèi)嵌表格的Word文檔。本實(shí)施例中,當(dāng)Word模板中的所有帶替換標(biāo)志的元素替換完成時(shí),將包含了所有替換標(biāo)志對(duì)應(yīng)的替換表的Word模板生成Word文檔,將獲取的替換表生成在一個(gè)Word文檔中,實(shí)現(xiàn)了對(duì)帶有內(nèi)嵌表格的Word文檔的編寫,并且同時(shí)可添加多個(gè)不同的內(nèi)嵌表格,提高了Word文檔的編寫效率。
如圖3所示,在一個(gè)實(shí)施例中,提供一種Word內(nèi)嵌表格生成方法,包括:
步驟310,讀取并緩存Word模板,解析模板流生成Java對(duì)象。
本實(shí)施例中,預(yù)先建立能夠與替換表格進(jìn)行替換生成內(nèi)嵌表格的Word模板。將該模板讀取并緩存到內(nèi)存中,并使用該模板生成Word內(nèi)嵌表格。
具體的,在Word文檔中添加內(nèi)嵌表格,并在該表格中寫入預(yù)設(shè)字符,作為替換標(biāo)志,該替換標(biāo)志預(yù)置在需要替換或者需要生成內(nèi)嵌表格的位置,將帶有替換標(biāo)志的Word文檔生成Word模板,其中預(yù)設(shè)字符能夠根據(jù)需要添加或者刪減,并可以隨意設(shè)置Word模板的樣式。
進(jìn)一步的,按流讀取該Word模板,并將該模板緩存在內(nèi)存中,以便用來生成滿足用戶需求的Word文檔。這里所說的按流讀取是一種讀取文件的手段,文件以流的形式讀取或者寫入。即IO(輸入輸出)讀寫文件時(shí)傳遞的序列抽象為流。對(duì)讀取并緩存的Word模板進(jìn)行解析,生成Java對(duì)象。Java是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,對(duì)象是由類抽象出來的,所有的問題都是通過對(duì)象來處理。將Word模板解析為Java對(duì)象后進(jìn)行處理。
步驟320,讀取Java對(duì)象中的一個(gè)元素。
本實(shí)施例中,為了在對(duì)應(yīng)的位置生成對(duì)應(yīng)的替換表,需要對(duì)Word模板中的每一個(gè)元素進(jìn)行讀取,以判斷替換表插入的位置和內(nèi)容。將Java對(duì)象命名為document,對(duì)document中的元素逐個(gè)進(jìn)行讀取。
步驟330,判斷讀取到的元素是否為空,若是則執(zhí)行步驟380,若否則執(zhí)行步驟340。
本實(shí)施例中,判斷讀取到的元素是否為空,即判斷Word模板生成的Java對(duì)象中的元素是否已經(jīng)全部讀取完成,如果讀取的元素為空,則說明Word模板已經(jīng)全部讀取完成,執(zhí)行步驟380,如果不為空,則對(duì)讀取到的元素進(jìn)行后續(xù)處理,執(zhí)行步驟340。
步驟340,判斷讀取到的元素是否為表格,若是,則執(zhí)行步驟350,若否,則執(zhí)行步驟320。
本實(shí)施例中,Word模板中預(yù)先設(shè)置了帶有預(yù)設(shè)字符的內(nèi)嵌表格,當(dāng)讀取到的元素為表格時(shí),說明該位置可能需要生成或者替換成對(duì)應(yīng)的替換表作為內(nèi)嵌表格。當(dāng)讀取到的元素為表格時(shí),則進(jìn)行后續(xù)判斷處理,執(zhí)行步驟350,如果不是表格,則說明該元素不能替換成替換表,返回步驟320,重新對(duì)Java對(duì)象中的元素進(jìn)行讀取。
步驟350,當(dāng)讀取的元素為表格時(shí),讀取表格內(nèi)的預(yù)設(shè)字符。
本實(shí)施例中,當(dāng)讀取到的元素為表格時(shí),讀取表格中的內(nèi)容,判斷表格中的內(nèi)容是否為預(yù)設(shè)字符,若是讀取表格中的預(yù)設(shè)字符。預(yù)設(shè)字符是預(yù)先設(shè)置用來區(qū)分Word模板中預(yù)先設(shè)置的不同的內(nèi)嵌表格,并用來與替換表格建立對(duì)應(yīng)關(guān)系的字符。
具體的,為了能夠在Word模板中快速生成需要的內(nèi)嵌表格,即能夠直接使用替換表對(duì)Word中的對(duì)應(yīng)元素進(jìn)行替換,在需要生成內(nèi)嵌表格的位置預(yù)先設(shè)置表格,并用預(yù)設(shè)字符來對(duì)應(yīng)不同的替換表。如使用¥001表示需要生成資產(chǎn)負(fù)債表、HRX1表示員工信息統(tǒng)計(jì)表。通過不同的字符區(qū)別不同的預(yù)設(shè)內(nèi)嵌表格以及對(duì)應(yīng)的替換表。
步驟360,在預(yù)先建立的預(yù)設(shè)字符與替換表之間的對(duì)應(yīng)關(guān)系表中,查詢預(yù)設(shè)字符對(duì)應(yīng)的替換表。
本實(shí)施例中,預(yù)先建立預(yù)設(shè)字符與替換表之間的對(duì)應(yīng)關(guān)系,生成預(yù)設(shè)字符與替換表之間的對(duì)應(yīng)關(guān)系表,預(yù)先存儲(chǔ)在數(shù)據(jù)庫(kù)或者相關(guān)文件中。當(dāng)查詢到讀取的元素為內(nèi)嵌表格時(shí),讀取表格中的預(yù)設(shè)字符,將數(shù)據(jù)庫(kù)中預(yù)先存儲(chǔ)的對(duì)應(yīng)關(guān)系讀取到內(nèi)存中獲取預(yù)先存儲(chǔ)的預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系表,根據(jù)讀取到的預(yù)設(shè)字符,在對(duì)應(yīng)關(guān)系表中查找該讀取的預(yù)設(shè)字符對(duì)應(yīng)的替換表。
具體的,替換表是由系統(tǒng)生成的,如在EAS(指一款企業(yè)管理軟件)系統(tǒng)中生成的客戶報(bào)表,該替換表可以根據(jù)EAS系統(tǒng)的改變以及客戶信息的更新及時(shí)的更新改進(jìn),可以獲取實(shí)時(shí)的替換表用來生成Word文檔的內(nèi)嵌表格。由于替換表是由系統(tǒng)自動(dòng)生成的,因此不僅可以根據(jù)預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系替換內(nèi)嵌表格,即及時(shí)更新已經(jīng)建立的Word模板中的內(nèi)嵌表格的信息;還可以根據(jù)用戶需求生成內(nèi)嵌表格,即使用不同的預(yù)設(shè)字符,在Word模板中加入原來沒有的表格信息或者類型。
步驟370,將獲取的替換表生成POI可識(shí)別表格,利用POI可識(shí)別表格替換Java對(duì)象中帶有預(yù)設(shè)字符的表格,然后執(zhí)行步驟330。
本實(shí)施例中,按流讀取Word模板生辰Java對(duì)象,并讀取Java對(duì)象中的元素用來生成或替換內(nèi)嵌表格,當(dāng)獲取Java對(duì)象中的元素為表格并且表格中設(shè)置有預(yù)設(shè)字符時(shí),獲取該元素對(duì)應(yīng)的替換表,為了能使該替換表替換Java對(duì)象中的元素,需要將該替換表生成POI可識(shí)別表格。利用POI可識(shí)別表格替換Java對(duì)象中帶有預(yù)設(shè)文字的表格。POI提供API給Java程序?qū)icrosoft Office(一款操作辦公軟件)格式檔案的讀和寫的功能。
具體的,以EAS系統(tǒng)中生成的替換表為例,將替換表生成POI可識(shí)別表格的過程包括,在EAS系統(tǒng)中,獲取報(bào)表的行數(shù),設(shè)為rowNum(行數(shù))。在POI中用XWPFDocument(一種Java對(duì)象名稱)對(duì)象創(chuàng)建表格設(shè)為tbl(表格名稱)。按rowNum逐個(gè)獲取報(bào)表行對(duì)象,設(shè)為rowobj[i](讀取表格中元素的函數(shù))(i為從第一行到rowNum行,逐行遍歷時(shí)的行數(shù)標(biāo)識(shí),即第幾行),對(duì)每個(gè)rowobj[i]對(duì)象,在tbl創(chuàng)建行對(duì)象poiRow[i](在POI中創(chuàng)建對(duì)應(yīng)的行的函數(shù))(i標(biāo)識(shí)創(chuàng)建的第幾個(gè)行對(duì)象)。遍歷rowobj[i]對(duì)象中的cell(單元格),對(duì)每個(gè)單元格在poiRow[i]的對(duì)象中創(chuàng)建poicell,并根據(jù)cell(單元格)的樣式,內(nèi)容等樣式,對(duì)poicell元素進(jìn)行設(shè)置。雙重遍歷結(jié)束后(先按行遍歷,再按每行的單元格遍歷),tbl已經(jīng)是設(shè)置完成的表格。此時(shí)生成的表格即為POI可識(shí)別表格。在轉(zhuǎn)換后,調(diào)用XWPFDocument對(duì)象的setTable(位置,替換表格)來完成替換。
進(jìn)一步的,Java對(duì)象中帶有預(yù)設(shè)文字的表格可以是在Word模板400中需要替換的表格中增加預(yù)設(shè)字符作為標(biāo)志,如圖4所示,當(dāng)Word模板400中的原有資產(chǎn)負(fù)債表410需要更新時(shí),預(yù)先建立¥001字符411與資產(chǎn)負(fù)債表的對(duì)應(yīng)關(guān)系并在原有資產(chǎn)負(fù)債表中添加¥001字符411,當(dāng)對(duì)Java對(duì)象的元素進(jìn)行讀取時(shí),讀取到資產(chǎn)負(fù)債表判斷資產(chǎn)負(fù)債表410為表格,然后讀取資產(chǎn)負(fù)債表中的字符,讀取到字符中包括¥001字符411時(shí),則在對(duì)應(yīng)關(guān)系表430中獲取資產(chǎn)負(fù)債表替換表420,并將該替換表420轉(zhuǎn)換為POI可識(shí)別表格421,與Java對(duì)象中原有的資產(chǎn)負(fù)債表410進(jìn)行替換,實(shí)現(xiàn)更新后的資產(chǎn)負(fù)債表421作為內(nèi)嵌表格。
Java對(duì)象中帶有預(yù)設(shè)文字的表格可以是為了在Word模板500中增加某一類表格,在Word模板中預(yù)先定義一個(gè)表格框并設(shè)置特殊字符。如圖5所示,預(yù)先在Word模板中加入單元表格510并在其中設(shè)置HRX1字符511,并且預(yù)先建立HRX1字符511與員工信息表520的對(duì)應(yīng)關(guān)系并存儲(chǔ)在數(shù)據(jù)庫(kù)或者其他相關(guān)文件中。當(dāng)需要制作帶有員工信息表520的Word文檔時(shí),讀取預(yù)先定義的Word模板500,當(dāng)讀取到的元素為表格510時(shí),讀取表格中的字符,若讀取到的字符為HRX1字符511,則讀取數(shù)據(jù)庫(kù)或者相關(guān)文件中存儲(chǔ)的的對(duì)應(yīng)關(guān)系表530獲取員工信息表520,將該員工信息表生成POI可識(shí)別表格521,并替換Word模板中的帶有HRX1字符511的單元表格510,實(shí)現(xiàn)插入員工信息表521作為內(nèi)嵌表格。
步驟380,將所有帶有預(yù)設(shè)字符的表格全部替換完成時(shí),將緩存的Word模板生成Word文檔。
本實(shí)施例中,對(duì)所有帶有預(yù)設(shè)字符的表格元素全部替換完成時(shí),已替換完成所有的內(nèi)嵌表格,將替換后的緩存的Word模板生成Word文檔。
具體的,對(duì)Word模板中的元素逐個(gè)進(jìn)行讀取,當(dāng)檢測(cè)到該元素為表格并且?guī)в蓄A(yù)設(shè)字符時(shí),根據(jù)預(yù)設(shè)的預(yù)設(shè)字符與替換表之前的對(duì)應(yīng)關(guān)系,獲取相應(yīng)的替換表格進(jìn)行替換。當(dāng)讀取到的元素為空時(shí),說明Word模板中的所有元素已經(jīng)讀取完畢,所有帶有預(yù)設(shè)字符的替換表格已全部完成替換,此時(shí)生成的帶有內(nèi)嵌表格的Word模板仍為一個(gè)Java對(duì)象,因?yàn)閃ord模板為按流讀取解析為Java對(duì)象的,所以需要以流的形式重新生成Word文檔,該文檔即為帶有替換后的內(nèi)嵌表格的Word文檔。
本實(shí)施例中,預(yù)先在Word模板的對(duì)象位置設(shè)置表格并在該表格中設(shè)置預(yù)設(shè)字符,能夠靈活設(shè)置Word模板樣式,當(dāng)需要生成帶有內(nèi)嵌表格的Word文檔時(shí),讀取并緩存預(yù)先建立的Word模板,根據(jù)Word模板中的預(yù)設(shè)字符能夠根據(jù)預(yù)設(shè)字符與系統(tǒng)生成的替換表之間的對(duì)應(yīng)關(guān)系,直接獲取系統(tǒng)中自動(dòng)生成的替換表,并將替換表替換到Word模板中的對(duì)應(yīng)位置,從而生成帶有內(nèi)嵌表格的Word文檔,使用方式靈活、簡(jiǎn)單,提高了Word文檔的編寫效率。
如圖6所示,在一個(gè)實(shí)施例中,提供一種Word內(nèi)嵌表格生成裝置,包括:
讀取模塊610,用于讀取預(yù)先定義的Word模板中的每一個(gè)元素。
判斷模塊620,用于判斷讀取的元素是否為替換標(biāo)志。
查詢模塊630,用于當(dāng)讀取的元素為替換標(biāo)志時(shí),根據(jù)預(yù)先建立的替換標(biāo)志中的預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系,查詢并獲取替換標(biāo)志對(duì)應(yīng)的替換表。
替換模塊640,用于將獲取的替換表與替換標(biāo)志進(jìn)行替換,生成內(nèi)嵌表格。
上述Word內(nèi)嵌表格生成裝置,預(yù)先在Word模板中建立替換標(biāo)志,并預(yù)先建立替換標(biāo)志與替換表之間的對(duì)應(yīng)關(guān)系,通過讀取Word模板中的替換標(biāo)志,能夠直接獲取對(duì)應(yīng)的替換表,與對(duì)應(yīng)的替換表進(jìn)行替換,從而在需要替換或生成表格的位置生成內(nèi)嵌表格。不需要定義大量的Word元素更新維護(hù)內(nèi)嵌表格,提高了Word文檔的編寫效率。
在一個(gè)實(shí)施例中,預(yù)先定義的Word模板為帶有替換標(biāo)志的Word模板,替換標(biāo)志為帶有預(yù)設(shè)字符的表格。
在一個(gè)實(shí)施例中,判斷模塊620還用于判斷讀取的元素是否為表格,當(dāng)讀取的元素為表格時(shí),讀取表格中的文字;判斷表格中的文字是否為預(yù)設(shè)字符。
在一個(gè)實(shí)施例中,替換模塊640用于將獲取的替換表轉(zhuǎn)換成POI可識(shí)別表格,將POI可識(shí)別表格與替換標(biāo)志進(jìn)行替換。
如圖7所示,在一個(gè)實(shí)施例中,提供一種Word內(nèi)嵌表格生成裝置,包括:
讀取模塊710,用于讀取預(yù)先定義的的Word模板中的每一個(gè)元素。
判斷模塊720,用于判斷讀取的元素是否為替換標(biāo)志。
查詢模塊730,用于當(dāng)讀取的元素為替換標(biāo)志時(shí),根據(jù)預(yù)先建立的替換標(biāo)志中的預(yù)設(shè)字符與替換表的對(duì)應(yīng)關(guān)系,查詢并獲取替換標(biāo)志對(duì)應(yīng)的替換表。
替換模塊740,用于將獲取的替換表與替換標(biāo)志進(jìn)行替換,生成內(nèi)嵌表格。
生成模塊750,用于當(dāng)Word模板中的所有帶替換標(biāo)志的元素替換完成時(shí),將替換了替換表的Word模板生成Word文檔。
上述實(shí)施例中,通過預(yù)先建立帶有替換標(biāo)志的表格,以及替換標(biāo)志與替換表之間的對(duì)應(yīng)關(guān)系,能夠直接獲取對(duì)應(yīng)的替換表與替換標(biāo)志進(jìn)行替換,從而生成對(duì)應(yīng)的內(nèi)嵌表格,替換完成后可以直接將帶有內(nèi)嵌表格的Word模板生成Word文檔,不需要人工設(shè)置Word元素對(duì)表格進(jìn)行修改和維護(hù),可以直接獲取替換表,極大的提高了Word文檔的編寫效率。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡(jiǎn)潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。