真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼word生成 java生成doc

如何能讓Java生成復(fù)雜Word文檔

目錄制作的幾種方法:

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括昂仁網(wǎng)站建設(shè)、昂仁網(wǎng)站制作、昂仁網(wǎng)頁(yè)制作以及昂仁網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,昂仁網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到昂仁省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

一.從標(biāo)題樣式創(chuàng)建目錄的操作步驟是:

(1)把光標(biāo)移到要移到目錄的位置。一般是創(chuàng)建在該文檔的開(kāi)頭或者結(jié)尾。

(2)單擊【插入】|【引用】|【索引和目錄】選項(xiàng),并在彈出的【索引和目錄】對(duì)話框選擇【目錄】選項(xiàng)卡,打開(kāi)【索引和目錄】對(duì)話框。

(3)在【格式】列表框中選擇目錄的風(fēng)格,選擇的結(jié)果可以通過(guò)【打印預(yù)覽】框來(lái)查看。如果選擇【來(lái)自模板】選項(xiàng),標(biāo)識(shí)使用內(nèi)置的目錄樣式(目錄1到目錄9)來(lái)格式化目錄。如果要改變目錄的樣式,可以單擊【修改】按鈕,按更改樣式的方法修改相應(yīng)的目錄樣式。并且只有選擇【來(lái)自模板】選項(xiàng)時(shí),【修改】按鈕才有效。

(4)如果要在目錄中每個(gè)標(biāo)題后面顯示頁(yè)碼,應(yīng)選擇【顯示頁(yè)碼】復(fù)選框。

(5)如果選中【頁(yè)碼右對(duì)齊】復(fù)選框,則可以讓頁(yè)碼右對(duì)齊。

(6)在【顯示級(jí)別】列表框中指定目錄中顯示的標(biāo)題層次。一般只顯示3級(jí)目錄比較恰當(dāng)。

(7)在【制表符前導(dǎo)符】列表框中指定標(biāo)題與頁(yè)碼之間的制表位分隔符。

(8)單擊【確定】按鈕

二.由目錄域創(chuàng)建目錄,操作方法如下:

(1)在文檔中將包含目錄的文字標(biāo)題選中。

(2)按快捷鍵alt+shift+o。打開(kāi)【標(biāo)記目錄項(xiàng)】對(duì)話框。

(3)在【級(jí)別】框中,選擇目錄的級(jí)別,如1,2,3等級(jí)別。并單擊【標(biāo)記】按鈕。

(4)不退出對(duì)此對(duì)話框,選擇第二個(gè)文字標(biāo)題,當(dāng)切換【標(biāo)記目錄項(xiàng)】對(duì)話框?yàn)榛顒?dòng)窗口時(shí),該選定的文本就會(huì)出現(xiàn)在【目錄項(xiàng)】文本框中。

繼續(xù)標(biāo)記直到完成。當(dāng)標(biāo)記完所有需要?jiǎng)?chuàng)建的目錄文本后,此時(shí)該對(duì)話框中的【取消】按鈕將變成【關(guān)閉】按鈕,單擊【關(guān)閉】按鈕退出。

(5)將光標(biāo)移到要插入目錄的位置(一般是文檔的開(kāi)頭或結(jié)尾處)。

(6)單擊【插入】|【引用】|【索引和目錄】命令。

(7)單擊【目錄】選項(xiàng)卡。

(8)單擊【選項(xiàng)】按鈕。

(9)在【目錄選項(xiàng)】框中,選中【目錄項(xiàng)域】復(fù)選框。并且清除【樣式】和【大綱級(jí)別】復(fù)選框。

(10)連續(xù)單擊【確定】按鈕即可使用目錄域創(chuàng)建目錄,即可在指定的地方插入了由目錄域創(chuàng)建的目錄。

java如何根據(jù)word模板生成word文檔

首先是action的createDoc方法:

[java]

/**

* 通過(guò)HttpCient調(diào)用報(bào)告服務(wù)器的方法生成報(bào)告 DOC

*/

public String createDoc() throws Exception {

//定義放回成功與否的判斷碼

String prMsg="";

// 獲取當(dāng)前登錄的用戶

UserVo userVo = CommonUtils.getUserMessage();

//獲取模版類(lèi)型

docType = Struts2Utils.getParameter("docType");

//重新創(chuàng)建文檔

String creatOrnot = Struts2Utils.getParameter("creatOrnot");

//獲取組組編號(hào)參數(shù)

workgroupId = Struts2Utils.getParameter("workgroupId");

//獲取評(píng)估用例實(shí)例ID參數(shù)

evtcaseInstId = Struts2Utils.getParameter("evtcaseInstId");

if(CommonUtils.isNotNull(docType)){

//獲取項(xiàng)目Id

projectId = Struts2Utils.getParameter("projectId");

if(!CommonUtils.isNotNull(projectId)){

if(CommonUtils.isNotNull(this.getIdFromSession("PM_PROJECTID"))){

projectId = this.getIdFromSession("PM_PROJECTID").toString();

}else{

Struts2Utils.getRequest().setAttribute("msg", "請(qǐng)先選擇項(xiàng)目!");

}

}

if(CommonUtils.isNotNull(projectId)){

prMsg = infoSystemDescService.downloadFileByUrl(projectId, userVo.getUserId(), workgroupId, evtcaseInstId, docType, creatOrnot);

}

}

return "docList";

}

注:在我貼出來(lái)的代碼中,能看懂就行了,有些不用管他(可能是其他業(yè)務(wù)方面的判斷),關(guān)于最后返回的prMsg---代表各種狀態(tài) 主要表示成功與否或者是出錯(cuò)的信息。

接著我貼出service層的方法downloadFileByUrl

[java]

/prep/pp/ppre name="code" class="java"pre name="code" class="java"/**

* 功能:

* 1.(生成報(bào)告文檔)

* 2.保存指定URL的源文件到指定路徑下

* @param projectId

* @param userId

* @param workgroupId

* @param evtcaseInstId

* @param docType

* @param creatOrnot

* @return

* @throws Exception

*/

@SuppressWarnings("deprecation")

public synchronized String downloadFileByUrl(String projectId,String userId,String workgroupId,String evtcaseInstId,String docType,String creatOrnot) throws Exception {

String msg = "1";//"1":默認(rèn)為創(chuàng)建成功的提示信息 "2":標(biāo)識(shí)創(chuàng)建失敗

String srcUrl = ""; //報(bào)告服務(wù)器的執(zhí)行路徑

HttpResponse response = null;

FileOutputStream out = null;

HttpClient httpclient = null;

HttpGet httpget = null;

long time1 = System.currentTimeMillis();

//獲取保存后的路徑

TProjDoc projDoc = projectDocDao.findFileByType(userId, Integer.parseInt(docType), Long.parseLong(projectId), workgroupId,evtcaseInstId);

if(projDoc == null || (projDoc != null CommonUtils.isNotNull(creatOrnot) creatOrnot.equals("1"))){ //FT_任務(wù)編號(hào)_[FID]

try {

//獲取報(bào)告服務(wù)器的執(zhí)行路徑

srcUrl = xmlPathDef.getActionUrl(docType, projectId,userId,workgroupId,evtcaseInstId);

HttpParams httpParams = new BasicHttpParams();

// 設(shè)置最大連接數(shù)

ConnManagerParams.setMaxTotalConnections(httpParams, 1);

// 設(shè)置獲取連接的最大等待時(shí)間

//ConnManagerParams.setTimeout(httpParams, 6000);

// 設(shè)置每個(gè)路由最大連接數(shù)

ConnPerRouteBean connPerRoute = new ConnPerRouteBean(1);

ConnManagerParams.setMaxConnectionsPerRoute(httpParams,connPerRoute);

// 設(shè)置連接超時(shí)時(shí)間

HttpConnectionParams.setConnectionTimeout(httpParams, 6000);

// 設(shè)置讀取超時(shí)時(shí)間

if(docType.toString().equals(XmlPathDef.SPOTTEST_DOC) docType.toString().equals(XmlPathDef.FTEST_DOC)){

HttpConnectionParams.setSoTimeout(httpParams, 2400000);

}else{

HttpConnectionParams.setSoTimeout(httpParams, 600000);

}

SchemeRegistry registry = new SchemeRegistry();

registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));

registry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));

ClientConnectionManager connectionManager = new ThreadSafeClientConnManager(httpParams, registry);

httpclient = new DefaultHttpClient(connectionManager, httpParams);

httpget = new HttpGet(srcUrl);

//執(zhí)行返回

response = httpclient.execute(httpget);

//如果是本機(jī)既當(dāng)服務(wù)器,又當(dāng)報(bào)表服務(wù)器,那么就只生成一遍

String ipvalues = xmlPathDef.getRepUrl();

if(CommonUtils.isNotNull(ipvalues)){

if(ipvalues.indexOf(":") != -1){

ipvalues = ipvalues.substring(0,ipvalues.lastIndexOf(":"));

}

}

HttpEntity entity = response.getEntity();

//獲取保存后的路徑

projDoc = projectDocDao.findFileByType(userId,Integer.parseInt(docType), Long.parseLong(projectId), workgroupId,evtcaseInstId);

String filePath = "";

if(projDoc != null)

filePath = projDoc.getPath();

if(CommonUtils.isNotNull(filePath)){

String basepath = XmlPathDef.getBasePath();

String outFilePath = (basepath + filePath).replaceAll("\\\\", "\\/");

XmlPathDef.isExists(outFilePath);

File wdFile = new File(outFilePath);

out = new FileOutputStream(wdFile);

int l;

byte[] tmp = new byte[2048];

while ((l = instream.read(tmp)) != -1) {

out.write(tmp, 0, l);

}

out.flush();

out.close();

System.out.println("****************************** ");

System.out.println("");

System.out.println("*************** 恭喜! 報(bào)告創(chuàng)建成功 結(jié)束 ***************");

System.out.println("");

}else{

msg = "8";//說(shuō)明word創(chuàng)建成功,但是數(shù)據(jù)沒(méi)有保存成功

response = null;

}

}else{

msg = "2";

}

} catch (ClientProtocolException e) {

msg = "7";

e.printStackTrace();

} catch (IOException e) {

msg = "7";

logger.error("數(shù)據(jù)庫(kù)報(bào)告服務(wù)器地址配置錯(cuò)誤或網(wǎng)絡(luò)不通!!2.連接是否超時(shí)" + e.getMessage());

e.printStackTrace();

}finally{

if(out!=null){

try {

out.close();

} catch (IOException e) {

msg = "7";

logger.error("數(shù)據(jù)庫(kù)報(bào)告服務(wù)器地址配置錯(cuò)誤或網(wǎng)絡(luò)不通??!2.連接是否超時(shí)" + e.getMessage());

e.printStackTrace();

}

}

}

}

long time2 = System.currentTimeMillis();

long numTime = time2 - time1;

if(docType.toString().equals(XmlPathDef.SPOTTEST_DOC) docType.toString().equals(XmlPathDef.FTEST_DOC)){

if(numTime = 2401000){

msg = "9";

}

}else{

if(numTime = 601000){

msg = "9";

}

}

System.out.println("");

String loggerinfo = "********* 報(bào)告類(lèi)型為 :" + docType + " 執(zhí)行時(shí)間為: " + (time2 - time1) /1000 + " 秒!***************";

System.out.println(loggerinfo);

System.out.println("");

System.out.println("*****************************");

logger.info(loggerinfo);

return msg;

}

怎么用java導(dǎo)出word

java導(dǎo)出word代碼如下:

package com.bank.util;

import java.awt.Color;

import java.io.FileOutputStream;

import java.io.IOException;

import com.lowagie.text.Cell;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Element;

import com.lowagie.text.Font;

import com.lowagie.text.FontFactory;

import com.lowagie.text.Image;

import com.lowagie.text.PageSize;

import com.lowagie.text.Paragraph;

import com.lowagie.text.Phrase;

import com.lowagie.text.Table;

import com.lowagie.text.pdf.BaseFont;

import com.lowagie.text.rtf.RtfWriter2;

public class WordTools {

public void createDocContext(String file) throws DocumentException,

IOException {

// 設(shè)置紙張大小

Document document = new Document(PageSize.A4);

// 建立一個(gè)書(shū)寫(xiě)器(Writer)與document對(duì)象關(guān)聯(lián),通過(guò)書(shū)寫(xiě)器(Writer)可以將文檔寫(xiě)入到磁盤(pán)中

RtfWriter2.getInstance(document, new FileOutputStream(file));

document.open();

// 設(shè)置中文字體

BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",

"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

// 標(biāo)題字體風(fēng)格

Font titleFont = new Font(bfChinese, 12, Font.BOLD);

// 正文字體風(fēng)格

Font contextFont = new Font(bfChinese, 10, Font.NORMAL);

Paragraph title = new Paragraph("標(biāo)題");

// 設(shè)置標(biāo)題格式對(duì)齊方式

title.setAlignment(Element.ALIGN_CENTER);

title.setFont(titleFont);

document.add(title);

String contextString = "iText是一個(gè)能夠快速產(chǎn)生PDF文件的java類(lèi)庫(kù)。"

+ " \n"http:// 換行

+ "iText的java類(lèi)對(duì)于那些要產(chǎn)生包含文本,"

+ "表格,圖形的只讀文檔是很有用的。它的類(lèi)庫(kù)尤其與java Servlet有很好的給合。"

+ "使用iText與PDF能夠使你正確的控制Servlet的輸出。";

Paragraph context = new Paragraph(contextString);

// 正文格式左對(duì)齊

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

// 離上一段落(標(biāo)題)空的行數(shù)

context.setSpacingBefore(5);

// 設(shè)置第一行空的列數(shù)

context.setFirstLineIndent(20);

document.add(context);

//利用類(lèi)FontFactory結(jié)合Font和Color可以設(shè)置各種各樣字體樣式

/**

* Font.UNDERLINE 下劃線,F(xiàn)ont.BOLD 粗體

*/

Paragraph underline = new Paragraph("下劃線的實(shí)現(xiàn)", FontFactory.getFont(

FontFactory.HELVETICA_BOLDOBLIQUE, 18, Font.UNDERLINE,

new Color(0, 0, 255)));

document.add(underline);

// 設(shè)置 Table 表格

Table aTable = new Table(3);

int width[] = {25,25,50};

aTable.setWidths(width);//設(shè)置每列所占比例

aTable.setWidth(90); // 占頁(yè)面寬度 90%

aTable.setAlignment(Element.ALIGN_CENTER);//居中顯示

aTable.setAlignment(Element.ALIGN_MIDDLE);//縱向居中顯示

aTable.setAutoFillEmptyCells(true); //自動(dòng)填滿

aTable.setBorderWidth(1); //邊框?qū)挾?/p>

aTable.setBorderColor(new Color(0, 125, 255)); //邊框顏色

aTable.setPadding(0);//襯距,看效果就知道什么意思了

aTable.setSpacing(0);//即單元格之間的間距

aTable.setBorder(2);//邊框

//設(shè)置表頭

/**

* cell.setHeader(true);是將該單元格作為表頭信息顯示;

* cell.setColspan(3);指定了該單元格占3列;

* 為表格添加表頭信息時(shí),要注意的是一旦表頭信息添加完了之后, \

* 必須調(diào)用 endHeaders()方法,否則當(dāng)表格跨頁(yè)后,表頭信息不會(huì)再顯示

*/

Cell haderCell = new Cell("表格表頭");

haderCell.setHeader(true);

haderCell.setColspan(3);

aTable.addCell(haderCell);

aTable.endHeaders();

Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);

Cell cell = new Cell(new Phrase("這是一個(gè)測(cè)試的 3*3 Table 數(shù)據(jù)", fontChinese ));

cell.setVerticalAlignment(Element.ALIGN_TOP);

cell.setBorderColor(new Color(255, 0, 0));

cell.setRowspan(2);

aTable.addCell(cell);

aTable.addCell(new Cell("#1"));

aTable.addCell(new Cell("#2"));

aTable.addCell(new Cell("#3"));

aTable.addCell(new Cell("#4"));

Cell cell3 = new Cell(new Phrase("一行三列數(shù)據(jù)", fontChinese ));

cell3.setColspan(3);

cell3.setVerticalAlignment(Element.ALIGN_CENTER);

aTable.addCell(cell3);

document.add(aTable);

document.add(new Paragraph("\n"));

//添加圖片

// Image img=Image.getInstance("");

// img.setAbsolutePosition(0, 0);

// img.setAlignment(Image.RIGHT);//設(shè)置圖片顯示位置

// img.scaleAbsolute(12,35);//直接設(shè)定顯示尺寸

// img.scalePercent(50);//表示顯示的大小為原尺寸的50%

// img.scalePercent(25, 12);//圖像高寬的顯示比例

// img.setRotation(30);//圖像旋轉(zhuǎn)一定角度

// document.add(img);

document.close();

}

public static void main(String[] args){

WordTools b=new WordTools();

try {

b.createDocContext("d:/demo.doc");

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

java動(dòng)態(tài)生成word,該怎么解決

首先,通過(guò)xml模板可以將基本上所有的格式都事先鎖定,包括頁(yè)碼和分頁(yè),只要你事先預(yù)設(shè)好就能夠通過(guò)freemarker實(shí)現(xiàn)生成,

接下來(lái)就是我這個(gè)問(wèn)題了,目錄怎么解決,下面是解決思路:

1:目錄的內(nèi)容可以根據(jù)之前其他的內(nèi)容一樣解決,通過(guò)xml模板預(yù)先設(shè)置好,

2:目錄的頁(yè)碼已經(jīng)研究過(guò)是不能直接通過(guò)xml模板實(shí)現(xiàn)動(dòng)態(tài)對(duì)應(yīng)了(至少我沒(méi)搞定0.0)

3:由于不能夠一步到位,我采取了在模板中預(yù)留了一頁(yè)空白頁(yè),只留了抬頭的目錄兩個(gè)字,然后通過(guò)查詢目錄二字進(jìn)行目錄的生成,

這個(gè)功能也是我剛剛折騰出來(lái)的0.0目前還沒(méi)測(cè)試能不能用模板生成目錄后再更新目錄0.0,不過(guò)想想可以直接生成目錄應(yīng)該就不用這么麻煩了,至于word生成后的修改0.0我覺(jué)得還是以后再說(shuō)吧.....

整體來(lái)說(shuō)應(yīng)該還算完美解決了,代碼我就不在這貼出來(lái)了~

雖然中間折騰了半天走了半天彎路~

講道理還是用的jacob來(lái)實(shí)現(xiàn)的。。


分享名稱(chēng):java代碼word生成 java生成doc
文章轉(zhuǎn)載:http://weahome.cn/article/ddoidis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部