Java 在Word創(chuàng)建表格

表格作為一種可視化交流模式及組織整理數(shù)據(jù)的手段,在各種場(chǎng)合及文檔中應(yīng)用廣泛授瘦。常見(jiàn)的表格可包含文字醋界、圖片等元素竟宋,我們操作表格時(shí)可以插入圖片、寫入文字及格式化表格樣式等形纺。下面丘侠,將通過(guò)Java編程在Word文檔中創(chuàng)建表格并實(shí)現(xiàn)格式化操作,包括設(shè)置字體逐样、字號(hào)蜗字、字體顏色、字體粗細(xì)等脂新,設(shè)置單元格對(duì)齊方式挪捕、單元格背景色、單元格合并争便、設(shè)置表格邊框樣式级零、插入圖片等。

使用工具:Free Spire.Doc for Java 2.0.0 (免費(fèi)版)

Jar文件導(dǎo)入

方法?1??首先通過(guò)?官網(wǎng)獲取?jar包滞乙。下載控件包并解壓妄讯。

導(dǎo)入步驟?:在程序中新建一個(gè)directory目錄,并命名(本示例中命名為lib)酷宵;將控件包lib文件夾下的Spire.Doc.jar文件(如下圖1)復(fù)制到程序中新建的目錄下。復(fù)制jar文件后躬窜,鼠標(biāo)右鍵點(diǎn)擊jar文件浇垦,選擇”Add as Library”。完成導(dǎo)入(如下圖2)荣挨。

?1?

?2?

方法?2??通過(guò)maven導(dǎo)入男韧。參考?導(dǎo)入方法?

Java代碼示例(供參考)

?Step 1:創(chuàng)建文檔

Documentdoc = new Document();Sectionsec = doc.addSection();

Step 2:聲明數(shù)組內(nèi)容

//聲明數(shù)組內(nèi)容String[] header = {"班級(jí)","姓名","性別","學(xué)號(hào)","專業(yè)成績(jī)"};String[][] data =? ? ? ? {newString[]{"一班","王麗","女","Y1256486","138"},newString[]{"一班","洪菲菲","女","Y5425875","134"},newString[]{"二班","劉洋","男","B1546258","141"},newString[]{"三班","馮剛","男","B1542367","136"},newString[]{"三班","劉思源","男","Z1263547","133"},? ? ? ? };

Step 3:添加表格并寫入數(shù)據(jù)

//添加表格Tabletable = sec.addTable(true);table.resetCells(data.length +1, header.length);//設(shè)置表格第一行作為表頭默垄,寫入表頭數(shù)組內(nèi)容此虑,并格式化表頭數(shù)據(jù)TableRowrow = table.getRows().get(0);row.isHeader(true);row.setHeight(20);row.setHeightType(TableRowHeightType.Exactly);row.getRowFormat().setBackColor(Color.ORANGE);for(int i =0; i < header.length; i++) {? ? row.getCells().get(i).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);Paragraphp = row.getCells().get(i).addParagraph();? ? p.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);TextRangerange1 = p.appendText(header[i]);? ? range1.getCharacterFormat().setFontName("Arial");? ? range1.getCharacterFormat().setFontSize(12f);? ? range1.getCharacterFormat().setBold(true);? ? range1.getCharacterFormat().setTextColor(Color.white);}//寫入剩余組內(nèi)容到表格,并格式化數(shù)據(jù)for(int r =0; r < data.length; r++) {TableRowdataRow = table.getRows().get(r +1);? ? dataRow.setHeight(25);? ? dataRow.setHeightType(TableRowHeightType.Exactly);? ? dataRow.getRowFormat().setBackColor(Color.white);for(intc=0;c< data[r].length;c++) {? ? ? ? dataRow.getCells().get(c).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);TextRangerange2 = dataRow.getCells().get(c).addParagraph().appendText(data[r][c]);? ? ? ? range2.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);? ? ? ? range2.getCharacterFormat().setFontName("Arial");? ? ? ? range2.getCharacterFormat().setFontSize(10f);? ? }}

Step 4:合并單元格

table.applyVerticalMerge(0,1,2);table.applyVerticalMerge(0,4,5);

Step 5:插入圖片到單元格

DocPicture dp = table.getRows().get(1).getCells().get(0).addParagraph().appendPicture("1.png");dp.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);

Step 6:設(shè)置單元格背景色

for (intj =1; j < table.getRows().getCount(); j++) {if (j%2==0) {? ? ? ? TableRow row2 = table.getRows().get(j);for (intf =1; f < row2.getCells().getCount(); f++) {row2.getCells().get(f).getCellFormat().setBackColor(newColor(144,238,144));}? ? }}

Step 7:設(shè)置表格邊框樣式

table.getTableFormat().getBorders().setBorderType(BorderStyle.Thick_Thin_Large_Gap);

Step 8:保存文檔

doc.saveToFile("CreateTable.docx",FileFormat.Docx_2013);

表格創(chuàng)建效果:

全部代碼:

importcom.spire.doc.*;importcom.spire.doc.documents.*;importcom.spire.doc.fields.DocPicture;importcom.spire.doc.fields.TextRange;importjava.awt.*;publicclassCreateTable{? ? publicstaticvoidmain(String[] args){//創(chuàng)建Document對(duì)象Document doc =newDocument();? ? ? ? Section sec = doc.addSection();//聲明數(shù)組內(nèi)容String[] header = {"班級(jí)","姓名","性別","學(xué)號(hào)","專業(yè)成績(jī)"};String[][] data =? ? ? ? ? ? ? ? {newString[]{"一班","王麗","女","Y1256486","138"},newString[]{"一班","洪菲菲","女","Y5425875","134"},newString[]{"二班","劉洋","男","B1546258","141"},newString[]{"三班","馮剛","男","B1542367","136"},newString[]{"三班","劉思源","男","Z1263547","133"},? ? ? ? ? ? ? ? };//添加表格Table table = sec.addTable(true);? ? ? ? table.resetCells(data.length +1, header.length);//設(shè)置表格第一行作為表頭口锭,寫入表頭數(shù)組內(nèi)容朦前,并格式化表頭數(shù)據(jù)TableRow row = table.getRows().get(0);? ? ? ? row.isHeader(true);? ? ? ? row.setHeight(20);? ? ? ? row.setHeightType(TableRowHeightType.Exactly);? ? ? ? row.getRowFormat().setBackColor(Color.ORANGE);for(inti =0; i < header.length; i++) {? ? ? ? ? ? row.getCells().get(i).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);? ? ? ? ? ? Paragraph p = row.getCells().get(i).addParagraph();? ? ? ? ? ? p.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);? ? ? ? ? ? TextRange range1 = p.appendText(header[i]);? ? ? ? ? ? range1.getCharacterFormat().setFontName("Arial");? ? ? ? ? ? range1.getCharacterFormat().setFontSize(12f);? ? ? ? ? ? range1.getCharacterFormat().setBold(true);? ? ? ? ? ? range1.getCharacterFormat().setTextColor(Color.white);? ? ? ? }//寫入剩余組內(nèi)容到表格,并格式化數(shù)據(jù)for(intr =0; r < data.length; r++) {? ? ? ? ? ? TableRow dataRow = table.getRows().get(r +1);? ? ? ? ? ? dataRow.setHeight(25);? ? ? ? ? ? dataRow.setHeightType(TableRowHeightType.Exactly);? ? ? ? ? ? dataRow.getRowFormat().setBackColor(Color.white);for(intc =0; c < data[r].length; c++) {? ? ? ? ? ? ? ? dataRow.getCells().get(c).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);? ? ? ? ? ? ? ? TextRange range2 = dataRow.getCells().get(c).addParagraph().appendText(data[r][c]);? ? ? ? ? ? ? ? range2.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);? ? ? ? ? ? ? ? range2.getCharacterFormat().setFontName("Arial");? ? ? ? ? ? ? ? range2.getCharacterFormat().setFontSize(10f);? ? ? ? ? ? }? ? ? ? }//縱向合并指定單元格table.applyVerticalMerge(0,1,2);? ? ? ? table.applyVerticalMerge(0,4,5);//插入圖片到指定單元格DocPicture dp = table.getRows().get(1).getCells().get(0).addParagraph().appendPicture("1.png");? ? ? ? dp.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);//設(shè)置單元格背景顏色for(intj =1; j < table.getRows().getCount(); j++) {if(j %2==0) {? ? ? ? ? ? ? ? TableRow row2 = table.getRows().get(j);for(intf =1; f < row2.getCells().getCount(); f++) {? ? ? ? ? ? ? ? ? ? row2.getCells().get(f).getCellFormat().setBackColor(newColor(144,238,144));? ? ? ? ? ? ? ? }? ? ? ? ? ? }? ? ? ? }//設(shè)置表格邊框樣式table.getTableFormat().getBorders().setBorderType(BorderStyle.Thick_Thin_Large_Gap);//保存文檔doc.saveToFile("CreateTable.docx", FileFormat.Docx_2013);? ? }}View Code

(本文完)

我自己是一個(gè)從事了6年的Java全棧工程師鹃操,最近整理了一套適合2019年學(xué)習(xí)的Java\大數(shù)據(jù)資料韭寸,從基礎(chǔ)的Java、大數(shù)據(jù)面向?qū)ο蟮竭M(jìn)階的框架知識(shí)都有整理哦荆隘,可以來(lái)我的主頁(yè)免費(fèi)領(lǐng)取哦恩伺。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市椰拒,隨后出現(xiàn)的幾起案子晶渠,更是在濱河造成了極大的恐慌凰荚,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褒脯,死亡現(xiàn)場(chǎng)離奇詭異便瑟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)憨颠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門胳徽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人爽彤,你說(shuō)我怎么就攤上這事养盗。” “怎么了适篙?”我有些...
    開(kāi)封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵往核,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我嚷节,道長(zhǎng)聂儒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任硫痰,我火速辦了婚禮衩婚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘效斑。我一直安慰自己非春,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布缓屠。 她就那樣靜靜地躺著奇昙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敌完。 梳的紋絲不亂的頭發(fā)上储耐,一...
    開(kāi)封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音滨溉,去河邊找鬼什湘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛业踏,可吹牛的內(nèi)容都是我干的禽炬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼勤家,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼腹尖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤热幔,失蹤者是張志新(化名)和其女友劉穎乐设,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绎巨,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡近尚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了场勤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戈锻。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖和媳,靈堂內(nèi)的尸體忽然破棺而出格遭,到底是詐尸還是另有隱情,我是刑警寧澤留瞳,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布拒迅,位于F島的核電站,受9級(jí)特大地震影響她倘,放射性物質(zhì)發(fā)生泄漏璧微。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一硬梁、第九天 我趴在偏房一處隱蔽的房頂上張望前硫。 院中可真熱鬧,春花似錦荧止、人聲如沸开瞭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至个扰,卻和暖如春瓷炮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背递宅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工娘香, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人办龄。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓烘绽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親俐填。 傳聞我的和親對(duì)象是個(gè)殘疾皇子安接,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,464評(píng)論 0 13
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,034評(píng)論 0 2
  • library(pheatmap) data<- read.table("new 1.txt",header = ...
    Weiyx閱讀 650評(píng)論 0 0
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,835評(píng)論 0 38
  • 使用首先需要了解他的工作原理 1.POI結(jié)構(gòu)與常用類 (1)創(chuàng)建Workbook和Sheet (2)創(chuàng)建單元格 (...
    長(zhǎng)城ol閱讀 8,445評(píng)論 2 25