「java中生成word」Java中生成随机整数

博主:adminadmin 2023-01-18 19:42:12 289

本篇文章给大家谈谈java中生成word,以及Java中生成随机整数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 自动生成word怎么生成

用java生成word文档

poi是apache的一个项目,不过就算用poi你可能都觉得很烦,不过不要紧,这里提供了更加简单的一个接口给你:

这个包就是:tm-extractors-0.4.jar

下载之后,放到你的classpath就可以了,下面是如何使用它的一个例子:

import java.io.*;

import org.textmining.text.extraction.WordExtractor;

/**

*

Title: pdf extraction

*

Description: email:chris@matrix.org.cn

*

Copyright: Matrix Copyright (c) 2003

*

Company: Matrix.org.cn

* @author chris

* @version 1.0,who use this example pls remain the declare

*/

public class PdfExtractor {

public PdfExtractor() {

}

public static void main(String args[]) throws Exception

{

FileInputStream in = new FileInputStream ("c:\\a.doc");

WordExtractor extractor = new WordExtractor();

String str = extractor.extractText(in);

System.out.println("the result length is"+str.length());

System.out.println("the result is"+str);

}

}

java如何根据word模板生成word文档

首先是action的createDoc方法:

[java]

/**

* 通过HttpCient调用报告服务器的方法生成报告 DOC

*/

public String createDoc() throws Exception {

//定义放回成功与否的判断码

String prMsg="";

// 获取当前登录的用户

UserVo userVo = CommonUtils.getUserMessage();

//获取模版类型

docType = Struts2Utils.getParameter("docType");

//重新创建文档

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

//获取组组编号参数

workgroupId = Struts2Utils.getParameter("workgroupId");

//获取评估用例实例ID参数

evtcaseInstId = Struts2Utils.getParameter("evtcaseInstId");

if(CommonUtils.isNotNull(docType)){

//获取项目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", "请先选择项目!");

}

}

if(CommonUtils.isNotNull(projectId)){

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

}

}

return "docList";

}

注:在我贴出来的代码中,能看懂就行了,有些不用管他(可能是其他业务方面的判断),关于最后返回的prMsg---代表各种状态 主要表示成功与否或者是出错的信息。

接着我贴出service层的方法downloadFileByUrl

[java]

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

* 功能:

* 1.(生成报告文档)

* 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":默认为创建成功的提示信息 "2":标识创建失败

String srcUrl = ""; //报告服务器的执行路径

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_任务编号_[FID]

try {

//获取报告服务器的执行路径

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

HttpParams httpParams = new BasicHttpParams();

// 设置最大连接数

ConnManagerParams.setMaxTotalConnections(httpParams, 1);

// 设置获取连接的最大等待时间

//ConnManagerParams.setTimeout(httpParams, 6000);

// 设置每个路由最大连接数

ConnPerRouteBean connPerRoute = new ConnPerRouteBean(1);

ConnManagerParams.setMaxConnectionsPerRoute(httpParams,connPerRoute);

// 设置连接超时时间

HttpConnectionParams.setConnectionTimeout(httpParams, 6000);

// 设置读取超时时间

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);

//执行返回

response = httpclient.execute(httpget);

//如果是本机既当服务器,又当报表服务器,那么就只生成一遍

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("*************** 恭喜! 报告创建成功 结束 ***************");

System.out.println("");

}else{

msg = "8";//说明word创建成功,但是数据没有保存成功

response = null;

}

}else{

msg = "2";

}

} catch (ClientProtocolException e) {

msg = "7";

e.printStackTrace();

} catch (IOException e) {

msg = "7";

logger.error("数据库报告服务器地址配置错误或网络不通!!2.连接是否超时" + e.getMessage());

e.printStackTrace();

}finally{

if(out!=null){

try {

out.close();

} catch (IOException e) {

msg = "7";

logger.error("数据库报告服务器地址配置错误或网络不通!!2.连接是否超时" + 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 = "********* 报告类型为 :" + docType + " 执行时间为: " + (time2 - time1) /1000 + " 秒!***************";

System.out.println(loggerinfo);

System.out.println("");

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

logger.info(loggerinfo);

return msg;

}

java动态生成word,该怎么解决

首先,通过xml模板可以将基本上所有的格式都事先锁定,包括页码和分页,只要你事先预设好就能够通过freemarker实现生成,

接下来就是我这个问题了,目录怎么解决,下面是解决思路:

1:目录的内容可以根据之前其他的内容一样解决,通过xml模板预先设置好,

2:目录的页码已经研究过是不能直接通过xml模板实现动态对应了(至少我没搞定0.0)

3:由于不能够一步到位,我采取了在模板中预留了一页空白页,只留了抬头的目录两个字,然后通过查询目录二字进行目录的生成,

这个功能也是我刚刚折腾出来的0.0目前还没测试能不能用模板生成目录后再更新目录0.0,不过想想可以直接生成目录应该就不用这么麻烦了,至于word生成后的修改0.0我觉得还是以后再说吧.....

整体来说应该还算完美解决了,代码我就不在这贴出来了~

虽然中间折腾了半天走了半天弯路~

讲道理还是用的jacob来实现的。。

java如何生成word文档功能是怎么实现的

跨平台文档,不如生成HTML文件更好,word也可以打开,其他平台也能打开。 如果切实需要二进制文件,其它平台要打开的话,目前有永中office,openoffice.org,libreoffice。 永中office本身就是JAVA编写的,在java中可以调用生成word文件。

java中如何生成word文档的目录页

1.创建带有格式的word文档,将该需要动态展示的数据使用变量符替换。 2. 将刚刚创建的word文档另存为xml格式。3.编辑这个XMl文档去掉多余的xml标记,如图中蓝色部分 4.从Freemarker官网【下载】最新的开发包,将freemarker.jar拷贝到自己的开发项目中。 5.新建DocUtil类,实现根据Doc模板生成word文件的方法6.用户根据自己的需要,调用使用getDataMap获取需要传递的变量,然后调用createDoc方法生成所需要的文档。

怎么用java导出word

java导出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 {

// 设置纸张大小

Document document = new Document(PageSize.A4);

// 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

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

document.open();

// 设置中文字体

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

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

// 标题字体风格

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

// 正文字体风格

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

Paragraph title = new Paragraph("标题");

// 设置标题格式对齐方式

title.setAlignment(Element.ALIGN_CENTER);

title.setFont(titleFont);

document.add(title);

String contextString = "iText是一个能够快速产生PDF文件的java类库。"

+ " \n"// 换行

+ "iText的java类对于那些要产生包含文本,"

+ "表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。"

+ "使用iText与PDF能够使你正确的控制Servlet的输出。";

Paragraph context = new Paragraph(contextString);

// 正文格式左对齐

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

// 离上一段落(标题)空的行数

context.setSpacingBefore(5);

// 设置第一行空的列数

context.setFirstLineIndent(20);

document.add(context);

//利用类FontFactory结合Font和Color可以设置各种各样字体样式

/**

* Font.UNDERLINE 下划线,Font.BOLD 粗体

*/

Paragraph underline = new Paragraph("下划线的实现", FontFactory.getFont(

FontFactory.HELVETICA_BOLDOBLIQUE, 18, Font.UNDERLINE,

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

document.add(underline);

// 设置 Table 表格

Table aTable = new Table(3);

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

aTable.setWidths(width);//设置每列所占比例

aTable.setWidth(90); // 占页面宽度 90%

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

aTable.setAlignment(Element.ALIGN_MIDDLE);//纵向居中显示

aTable.setAutoFillEmptyCells(true); //自动填满

aTable.setBorderWidth(1); //边框宽度

aTable.setBorderColor(new Color(0, 125, 255)); //边框颜色

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

aTable.setSpacing(0);//即单元格之间的间距

aTable.setBorder(2);//边框

//设置表头

/**

* cell.setHeader(true);是将该单元格作为表头信息显示;

* cell.setColspan(3);指定了该单元格占3列;

* 为表格添加表头信息时,要注意的是一旦表头信息添加完了之后, \

* 必须调用 endHeaders()方法,否则当表格跨页后,表头信息不会再显示

*/

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("这是一个测试的 3*3 Table 数据", 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("一行三列数据", 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);//设置图片显示位置

// img.scaleAbsolute(12,35);//直接设定显示尺寸

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

// img.scalePercent(25, 12);//图像高宽的显示比例

// img.setRotation(30);//图像旋转一定角度

// 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中生成word的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java中生成随机整数、java中生成word的信息别忘了在本站进行查找喔。