java操作word可操作书签

合集下载

Java操作word文档

Java操作word文档

Java操作word文档Java操作Word文档操作微软word办公软件的开发工具:1.Apache基金会提供的POI2.通过freemarker去解析xml3.Java2word4.iText5.Jacob通过对以上工具的对比,本人发现还是Itext比较简单易用,很容易上手,能够很轻松的处理word的样式、表格等。

贴上代码,供大家参考:Jar包准备:itext-2.0.1.jar -------------------核心包iTextAsian.jar--------------------解决word样式、编码问题扩展包1、设置标题样式public static Paragraph setParagraphTitle(String content,Font contentFont){Paragraph p = new Paragraph(content, contentFont);p.setAlignment(Table.ALIGN_CENTER);p.setIndentationLeft(60);p.setIndentationRight(60);p.setSpacingBefore(20);return p;}2、设置内容样式:public static Paragraph setParagraphStyle(String content,Font contentFont){Paragraph p = new Paragraph(content, contentFont);p.setFirstLineIndent(40);// 首行缩进p.setAlignment(Paragraph.ALIGN_JUSTIFIED);// 对齐方式p.setLeading(30);// 行间距p.setIndentationLeft(60);// 左边距,右边距p.setIndentationRight(60);return p;}3、设置文档末尾时间:public static Paragraph setParagraphTime(Font contentFont){ Paragraph p = new Paragraph(FormatUtil.getCurrentDate(), contentFont);p.setIndentationLeft(250);p.setIndentationRight(60);p.setLeading(30);p.setFirstLineIndent(40);return p;}4、开始写word文档咯:public static void WriteDoc(String path,Map map){Document document = null;try {File file = new File(path);if (!file.exists()) {file.createNewFile();}document = new Document(PageSize.A4);RtfWriter2.getInstance(document, newFileOutputStream(file));document.open();// 设置title body 中文字体及样式BaseFont cnFont =BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font titleFont = new Font(cnFont,22, Font.NORMAL, newColor(0,0, 0));Font contentFont = new Font(cnFont, 16, Font.NORMAL, new Color(0,0, 0));// 设置文本标题String titleInfo = “标题”;// 设置文本内容String contentFirst ="啊啊啊啊啊啊啊啊啊啊";String contentSecond="啊啊啊啊啊啊啊啊啊啊啊啊";String contentThird="啊啊啊啊啊啊啊啊啊啊啊啊啊";String contentFourth="啊啊啊啊啊啊啊啊啊啊";document.add(setParagraphTitle(titleInfo,titleFont));document.add(setParagraphStyle(contentFirst,contentFont));document.add(setParagraphStyle(contentSecond,contentFo nt));document.add(setParagraphStyle(contentThird,contentFont) );document.add(setParagraphStyle(contentFourth,contentFon t));document.add(setParagraphTime(contentFont));} catch (FileNotFoundException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {if (document != null) { document.close();}} catch (Exception e2) {e2.printStackTrace();}}}5、上传下载大家就自个动手了。

如何使用WORD文档中的标签和书签功能

如何使用WORD文档中的标签和书签功能

如何使用WORD文档中的标签和书签功能Word是一款功能强大的文字处理软件,在处理大量文字和文档时,使用标签和书签功能可以帮助我们更高效地管理和导航文档。

本文将介绍如何使用Word文档中的标签和书签功能。

一、什么是标签和书签标签和书签是Word中的两个重要功能,它们可以帮助我们在文档中快速定位和导航。

标签是一种用于在文档中创建、命名和定位特定位置的功能。

通过给文档中的某个位置设置标签,我们可以在需要时快速跳转到该位置。

书签则是用于在文档中创建、命名和定位特定位置的功能,但与标签不同的是,书签可以跨页存放。

二、如何设置标签和书签1. 设置标签:在Word文档中,通过以下步骤设置标签:1) 首先,将光标移动到标签所在的位置。

2) 然后,在Word菜单栏中选择“插入”选项,在下拉菜单中选择“标签”。

3) 在弹出的对话框中,输入标签的名称,并点击“添加”或“确定”按钮完成标签的设置。

2. 设置书签:在Word文档中,通过以下步骤设置书签:1) 首先,将光标移动到书签所在的位置。

2) 然后,在Word菜单栏中选择“插入”选项,在下拉菜单中选择“书签”。

3) 在弹出的对话框中,输入书签的名称,并点击“添加”或“确定”按钮完成书签的设置。

三、如何使用标签和书签1. 使用标签:通过设置标签,我们可以在需要时快速定位到特定的位置。

在Word文档中,使用标签的方法如下:1) 首先,点击Word菜单栏中的“查看”选项,在下拉菜单中选择“导航窗格”。

2) 在导航窗格中,选择“标签”,然后在“标签”列表中选择需要跳转的标签。

3) 单击选中的标签,即可快速跳转到标签所在的位置。

2. 使用书签:设置书签后,我们可以通过书签功能来快速导航到文档中的特定位置。

下面是使用书签的方法:1) 首先,点击Word菜单栏中的“查看”选项,在下拉菜单中选择“导航窗格”。

2) 在导航窗格中,选择“书签”,然后在“书签”列表中选择需要跳转的书签。

[原创]java操作word(一)

[原创]java操作word(一)

[原创]java操作word(一)一、需求背景在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印。

此需求可以通过用程序填充数据到word模板中来实现。

所谓模板也就是标记了数据位置的Word文件。

模板可以简单的分为两种:一种模板包含了固定的、有限个数的数据位置,比如一个请假条的模板中只有“部门、姓名、原因、天数、日期”几个数据位置,也可能是这5个数据位置中的某4个、某3个或某1个,但模板中的标签数量总是这个集合的子集(如下图所示:);另一种是包含了循环数据的,比如要生成一个员工信息表,这个表格中有不定个数的员工信息,每个员工的信息都包含了“编号、部门、姓名、年龄、籍贯”。

第一种模板导出word文件相对比较简单,在本文中先描述此方案的实现方法。

二、实现方法1. 编辑模板:模板中必须标记好数据要插入的位置,这样才可以实现用程序插入数据到文件的相应位置,就是说要想生成文件,数据的位置必须用某种元素来标记出来。

使用PageOffice填充数据到word文件,需要用Word书签来标记要插入数据的位置。

先在Word 模板中标记好“部门、姓名、原因、天数、日期”几个数据位置:PO_Dept、PO_Name、PO_Cause、PO_Num、PO_Date,如下图所示:一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。

第一种方法:把光标定位到需要标记数据位置的地方,点Word 菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。

点右侧的“添加”按钮,新的书签名将出现在下面的列表中。

第二种方法:选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,然后执行第一种方法的同样操作,“插入”→“书签”……注意:如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。

使用WORD文档的书签功能快速跳转到特定位置

使用WORD文档的书签功能快速跳转到特定位置

使用WORD文档的书签功能快速跳转到特定位置WORD是一款广泛使用的文字处理软件,它具备丰富的功能,其中书签功能可以帮助我们快速跳转到文档中的特定位置。

在本文中,将介绍如何使用WORD文档的书签功能以及它的一些应用场景。

一、书签功能的介绍书签是WORD中的一种功能,它可以让我们在文档中的特定位置设置标记,从而在需要时可以快速定位到这个位置。

通过使用书签功能,我们可以方便地进行文档的导航和编辑,提高工作的效率。

二、如何使用书签功能在WORD中使用书签功能非常简单,下面将介绍具体的操作步骤:1. 首先,打开需要设置书签的文档,在文档中选中一个位置作为书签的起始位置。

2. 点击“插入”菜单中的“书签”选项,在弹出的对话框中输入书签的名称,并点击“添加”按钮。

3. 这样,一个书签就成功地设置好了。

接下来,如果需要跳转到这个位置,只需要点击“插入”菜单中的“书签”选项,在弹出的书签列表中选择对应的书签名称,然后点击“跳转”按钮。

通过以上简单的步骤,就可以使用WORD文档的书签功能进行快速跳转。

三、书签功能的应用场景书签功能在各种工作场景中都能发挥重要作用,下面将介绍一些实际应用案例:1. 长篇文档的导航:当我们处理一篇较长的文档时,可能需要频繁地在不同的位置之间切换。

使用书签功能可以让我们快速定位到需要编辑或查看的部分,避免了不必要的滚动和搜索。

2. 多人协作编辑:在多人协作编辑文档的过程中,可能会有多个人在不同的位置进行编辑。

通过设置书签,可以快速定位到其他人正在编辑的位置,便于实时交流和合作。

3. 动态更新内容:有些文档需要定期进行内容更新,例如报告、手册等。

通过设置书签,可以在每次更新时快速跳转到需要编辑的位置,提高更新的效率。

4. 阅读笔记整理:当我们在阅读文档时,可能会有一些重要的观点或者需要进一步研究的内容。

通过设置书签,可以快速记录并跳转到这些需要重点关注的位置,便于后续的整理和分析。

四、小结通过使用WORD文档的书签功能,我们可以快速跳转到文档中的特定位置,提高了工作和学习的效率。

通过Java往word中写入内容

通过Java往word中写入内容
xlsheet.Cells(2,2).Value="密码";
xlsheet.Cells(2,3).Value="计费方式";
xlsheet.Cells(2,4).Value="有效天数";
xlsheet.Cells(2,5).Value="金额";
xlsheet.Cells(2,6).Value="所属服务项目";
xlsheet.Rows(1)="黑体";
<!--设置列宽xlsheet.Columns(2)=14;-->
xlsheet.Columns("A:D").ColumnWidth=18;
<!--设置显示字符而不是数字-->
xlsheet.Columns(2).NumberFormatLocal="@";
<!--设置行高-->
xlsheet.Rows(1).RowHeight=25;
<!--设置字体ws.Range(ws.Cells(i0+1,j0),ws.Cells(i0+1,j1)).Font.Size=13-->
xlsheet.Rows(1).Font.Size=14;
<!--设置字体设置选定区的字体xlsheet.Range(xlsheet.Cells(i0,j0),ws.Cells(i0,j0))="黑体"-->
sel.moveEnd('character');
myRange.Paste();
myRange=mydoc.Range(myRange.End-1,myRange.End);

Java开发调用PageOffice提供的Word手写批注接口

Java开发调用PageOffice提供的Word手写批注接口

Java开发调用PageOffice提供的Word手写批注接口在日常工作中,经常会遇到需要领导或者合作方在某些文件上签章的事情,但有时因为时间或地理区域的问题无法及时或方便的在文件上签字,此时怎么办呢?这时就可以通过程序实现在Word中在线打开要签字的电子版文件,然后通过手写批注接口实现在线批阅文件并签名。

具体实现步骤如下:第一步:拷贝文件到WEB项目的“WEB-INF/lib”目录下。

拷贝PageOffice 示例中下的“WEB-INF/lib”路径中的pageoffice.cab和pageoffice.jar到新建项目的“WEB-INF/lib”目录下。

第二步:修改WEB项目的配置文件。

将如下代码添加到配置文件中:<!-- PageOffice Begin --><servlet><servlet-name>poserver</servlet-name><servlet-class>com.zhuozhengsoft .pageoffice.poserver.Server</servlet-class></servlet><servlet-mapping><servlet-name>poserver</servlet-name><url-pattern>/poserver.do</url-pattern></servlet-mapping><servlet-mapping><servlet-name>poserver</servlet-name><url-pattern>/pageoffice.cab</url-pattern></servlet-mapping><servlet-mapping><servlet-name>poserver</servlet-name><url-pattern>/popdf.cab</url-pattern></servlet-mapping><servlet-mapping><servlet-name>poserver</servlet-name><url-pattern>/sealsetup.exe</url-pattern></servlet-mapping><servlet><servlet-name>adminseal</servlet-name><servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal </servlet-class></servlet><servlet-mapping><servlet-name>adminseal</servlet-name><url-pattern>/adminseal.do</url-pattern></servlet-mapping><servlet-mapping><servlet-name>adminseal</servlet-name><url-pattern>/loginseal.do</url-pattern></servlet-mapping><servlet-mapping><servlet-name>adminseal</servlet-name><url-pattern>/sealimage.do</url-pattern></servlet-mapping><mime-mapping><extension>mht</extension><mime-type>message/rfc822</mime-type></mime-mapping><context-param><param-name>adminseal-password</param-name><param-value>123456</param-value></context-param><!-- PageOffice End -->第三步:添加引用。

Jacob操作Word书签

Jacob操作Word书签

Jacob操作Word书签ActiveXComponent word = new ActiveXComponent("Word.Application");word.setProperty("Visible", new Variant(false));/*************************************************************************** * 删除书签** @param mark 书签名* @param info 可替换* @return*/public boolean deleteBookMark(String markKey, String info) throws Exception{Dispatch activeDocument = word.getProperty("ActiveDocument").toDispatch();Dispatch bookMarks = word.call(activeDocument, "Bookmarks").toDispatch();boolean isExists = word.call(bookMarks, "Exists", markKey).toBoolean();if (isExists) {Dispatch n = Dispatch.call(bookMarks, "Item", markKey).toDispatch();Dispatch.call(n, "Delete");return true;}return false;}/*************************************************************************** * 根据书签插入数据** @param bookMarkKey 书签名* @param info 插入的数据* @return*/public boolean intoValueBookMark(String bookMarkKey, String info) throws Exception{Dispatch activeDocument = word.getProperty("ActiveDocument").toDispatch();Dispatch bookMarks = word.call(activeDocument, "Bookmarks").toDispatch();boolean bookMarkExist = word.call(bookMarks, "Exists", bookMarkKey) .toBoolean();if (bookMarkExist) {Dispatch rangeItem = Dispatch.call(bookMarks, "Item", bookMarkKey) .toDispatch();Dispatch range = Dispatch.call(rangeItem, "Range").toDispatch();Dispatch.put(range, "Text", new Variant(info));return true;}return false;}。

javaword操作

javaword操作

javaword操作1.java复制文件savepath:D:\\Files.copy(Paths.get(savePath+"mould\\mould.doc"), new FileOutputStream(savePath+"dayplan\\1111.doc"));2.调用本地office打开wordRuntime.getRuntime().exec("rundll32 url.dll FileProtocolHandler " + "d:\\dayplan\\1111.doc");3.替换word数据详见:java修改Word文档内容pom:<!--poi支持--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.10-FINAL</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.10-FINAL</version></dependency>Map map=new HashMap();map.put("name","admin");//${name}map.put("age","24");//${age}map.put("sex","男");//${sex}CreatWordByModel("f:/test.doc",map,"f:/test2.doc");public static void CreatWordByModel(String tmpFile, Map<String, String> contentMap, String exportFile) throws Exception{InputStream in = null;in = new FileInputStream(new File(tmpFile));HWPFDocument document = null;document = new HWPFDocument(in);// 读取文本内容Range bodyRange = document.getRange();System.out.println(bodyRange.toString());System.out.println(bodyRange.text());// 替换内容for (Map.Entry<String, String> entry : contentMap.entrySet()) {bodyRange.replaceText("${" + entry.getKey() + "}", entry.getValue());}//导出到文件try {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();document.write((OutputStream)byteArrayOutputStream);OutputStream outputStream = new FileOutputStream(exportFile);outputStream.write(byteArrayOutputStream.toByteArray());outputStream.close();} catch (IOException e) {e.printStackTrace(); }}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最近有个需求,在word模板文档上设置书签,然后从数据库中查询数据,填充到word 文档书签位置,刚拿到需求时,使劲在网上找资料。

幻想第三方jar包,帮我实现。

有Apatch 的POI,java2word,jcob等,一直让我无法实现。

POI操作word只能获取word中的书签,并不能进行操作.java2word可以实现,但是除了包以外,还要一个dll文件放在system32文件夹下,环境部署在linux服务器上,谁允许你放这样的文件,结果死心了.下面新建一个word2007文件告诉大家不用第三方技术怎么一一实现。

现在新建一个word,在请输入用户名处添加书签userName,请输入年龄处添加书签age
Word2007版本其实就是zip格式,将新建word后缀名改.zip,解压会发现,里面全是文件夹,打开word文件夹会有一个文件,在word所有内容,都在这xml文件中, <w:bookmarkStart w:id="0" w:name="userName"/>
<w:r>
<w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr>
<w:t>请输入用户名</w:t>
</w:r>
<w:bookmarkEnd w:id="0"/>
这是新建书签处的内容,细心的会发现,书签处内容在<w:bookmarkStart/> <w:bookmarkEnd w:id="0"/>标签之间,<w:bookmarkStart>标签中的w:id跟w:name 标识书签的唯一,中间是书签处的内容,会不会可以这样呢,找到用dom或者sax解析这个xml文档找到<w:bookmarkStart/>标签,然后找到<w:r>标签,再找到<w:r>标签里面的<w:t>标签内容,替换就Ok了呢。

一开始我就这样想的。

但是你会发现,<w:bookmarkStart></w:bookmarkStart>不是这样配套的,如果是这样配套的,那按照前面的说的直接解析找到<w:bookmarkStart>标签就OK了。

分析xml文件你会发现,其实<w:bookmarkStart w:id="0" w:name="userName"/>标签跟<w:r>标签是同级的,只是结束方式不同而已,所以算是兄弟节点,可以不可以找到<w:bookmarkStart>的兄弟节点,也就是<w:r>标签,然后找到<w:t>标签,替换其文本。

其实w3c中Element对象中提供了获取兄弟节点的方法,getNextSibling()获取下一个兄弟节点。

按照分析的思路是可以实现的。

但是会不会有疑问,如果<w:bookmarkStar>的下一个兄弟节点会不会不是<w:r>标签呢,是的,如果书签处无内容,就会是这样的<w:bookmarkStart w:id="0" w:name="userName"/>
<w:bookmarkEnd w:id="0"/>
这样可以直接在<w:bookmarkStart>后面直接添加<w:r>标签
你多试几个文档你会发现,无论多复杂,只要节操还在。

都会是这个样子。

除非那种非常恶心的word。

这个还得看你的word模板而论.
这样的思路是可以实现了,但是该怎么用java搞定呢,下面贴出代码
public static void modifyDocumentAndSave() throws IOException,
ZipException, SAXException, ParserConfigurationException,
TransformerException, TransformerConfigurationException { arse(documentXMLIS);
quals(bookMarkName)) {
Element node = (Element) ();ewTransformer();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
(new DOMSource(doc), new StreamResult(baos));
ZipOutputStream docxOutFile = new ZipOutputStream(new FileOutputStream(
"D:\\"));
Enumeration entriesIter = ();
while ()) {
ZipEntry entry = (ZipEntry) ();
quals("word/")) {
byte[] data = ();
(new ZipEntry()));
(data, 0, ;
();
} else {
InputStream incoming = (entry);
//此处设定值需慎重,如果设置小了,会破坏word文档,至于为什么会破坏,自己去思考
byte[] data = new byte[1024 * 512]; int readCount = (data, 0, (int) ());
(new ZipEntry()));
(data, 0, readCount);
();
}
}
();
}。

相关文档
最新文档