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中的两个重要功能,它们可以帮助我们在文档中快速定位和导航。
标签是一种用于在文档中创建、命名和定位特定位置的功能。
通过给文档中的某个位置设置标签,我们可以在需要时快速跳转到该位置。
书签则是用于在文档中创建、命名和定位特定位置的功能,但与标签不同的是,书签可以跨页存放。
二、如何设置标签和书签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(一)](https://img.taocdn.com/s3/m/28167ade4bfe04a1b0717fd5360cba1aa8118cdc.png)
[原创]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中使用书签功能非常简单,下面将介绍具体的操作步骤:1. 首先,打开需要设置书签的文档,在文档中选中一个位置作为书签的起始位置。
2. 点击“插入”菜单中的“书签”选项,在弹出的对话框中输入书签的名称,并点击“添加”按钮。
3. 这样,一个书签就成功地设置好了。
接下来,如果需要跳转到这个位置,只需要点击“插入”菜单中的“书签”选项,在弹出的书签列表中选择对应的书签名称,然后点击“跳转”按钮。
通过以上简单的步骤,就可以使用WORD文档的书签功能进行快速跳转。
三、书签功能的应用场景书签功能在各种工作场景中都能发挥重要作用,下面将介绍一些实际应用案例:1. 长篇文档的导航:当我们处理一篇较长的文档时,可能需要频繁地在不同的位置之间切换。
使用书签功能可以让我们快速定位到需要编辑或查看的部分,避免了不必要的滚动和搜索。
2. 多人协作编辑:在多人协作编辑文档的过程中,可能会有多个人在不同的位置进行编辑。
通过设置书签,可以快速定位到其他人正在编辑的位置,便于实时交流和合作。
3. 动态更新内容:有些文档需要定期进行内容更新,例如报告、手册等。
通过设置书签,可以在每次更新时快速跳转到需要编辑的位置,提高更新的效率。
4. 阅读笔记整理:当我们在阅读文档时,可能会有一些重要的观点或者需要进一步研究的内容。
通过设置书签,可以快速记录并跳转到这些需要重点关注的位置,便于后续的整理和分析。
四、小结通过使用WORD文档的书签功能,我们可以快速跳转到文档中的特定位置,提高了工作和学习的效率。
通过Java往word中写入内容

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);
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;}。
Java 创建和移除Word书签

JAVA 创建移除Word书签在使用Word文档时,有时会遇到文档篇幅较长的情况,看了一部分,可以在中间创建一个书签,下次打开Word更加方便;如果不再需要书签,可以将书签移除。
本篇文章将通过Java在Word中创建和移除Word书签。
工具使用:●Free Spire.Doc for Java 2.0.0(免费版)●IntelliJ IDEAJar包文件导入:首先,获取Free Spire.Doc for Java文件包。
Step 1:下载控件包之后解压,打开“Project Structure”界面。
(以下是三种在IDEA中快速打开Project Structure界面的方式,可选其中任意一种)Step 2:按以下操作步骤进行导入。
①选择“Modules”—“Dependencies”,添加外置jar包;②进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③勾选jar路径选项,点击”OK”/”Apply”;④导入完成。
如下图:JAVA代码参考示例创建书签这里提供了一个Paragraph类,该类中有两个方法appendBookmarkStart(string name)和appendBookmarkEnd(string name),用来添加书签到指定的段落,其中BookmarkStart代表书签的起始位置。
import com.spire.doc.*;import com.spire.doc.documents.*;public class createBookmark {public static void main(String[] args) {//创建Document对象Document doc = new Document()//加载Word文档doc.loadFromFile("data/Sample.docx");//获取需要添加书签的段落Paragraph paragraph = doc.getSections().get(0).getParagraphs().get(2);//添加一个开始标签并移动到段落开头BookmarkStart start = paragraph.appendBookmarkStart("我的书签");paragraph.getItems().insert(0,start);//在段落末尾添加一个结束标签paragraph.appendBookmarkEnd("我的书签");//保存文档doc.saveToFile("output/AddBookmark.docx", FileFormat.Docx_2013);}}创建结果:移除书签在该jar 包文件中,每个Word 文档都含有一个书签的集合,通过Document 类的Bookmarks 属性来访问该集合,通过该集合的FindByName(string name)方法来查找指定的书签,然后将其删除。
Word插入书签如何在文档中添加书签

Word插入书签如何在文档中添加书签在Word中插入书签是一种非常有用的功能,它可以帮助您快速定位到文档中的特定位置。
无论是编辑文档还是查找相关信息,通过添加书签可以提高您的工作效率。
本文将介绍如何在Word文档中添加书签。
在Word文档中添加书签非常简单。
以下是详细步骤:第一步:打开Word文档首先,您需要打开您希望添加书签的Word文档。
在打开文档后,确保您已经编辑好文本内容。
第二步:选择要添加书签的位置在文档中选择您希望添加书签的位置。
这个位置可以是一个标题、一个段落或者任何您想要标记的地方。
第三步:点击插入选项卡在Word的顶部菜单栏中,点击"插入"选项卡。
这将打开插入菜单。
第四步:选择"书签"选项在插入菜单中,您会看到多个选项,包括图片、超链接、表格等等。
选择"书签"选项,这将打开书签对话框。
第五步:输入书签名称在书签对话框中,输入您希望为该位置添加的书签的名称。
书签名称可以是任何您方便记忆的名称,可以是一个单词或者短语。
请注意,书签名称不能包含空格或特殊字符。
第六步:点击"添加"按钮在输入书签名称后,点击对话框中的"添加"按钮。
这将在您选择的位置添加书签。
第七步:完成添加书签完成以上步骤后,您已成功添加了一个书签。
您可以重复以上步骤,为文档中的其他位置添加书签。
现在,您已经学会了在Word文档中添加书签的方法。
接下来,让我们来看一下如何使用已添加的书签。
第一步:定位到已添加的书签要定位到已添加的书签,首先需要选择"插入"选项卡,然后点击"导航窗格"按钮。
这将在右侧打开导航窗格。
第二步:选择书签在导航窗格中,您会看到一个"书签"选项,点击它。
这将显示您在文档中添加的所有书签。
第三步:点击书签名称在书签列表中,选择您想要跳转到的书签名称。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Element node = (Element)
oldBookStart.getNextSibling();// 获取兄弟节点w:r
// 如果书签处无文字,则在书签处添加需要替换的内
容,如果书签处存在描述文字,则替换内容,用w:r NodeList wtList =
TransformerException, TransformerConfigurationException {
// 使用java.util打开文件
File file=new File("D:test.docx"); boolean exist=file.exists(); boolean read=file.canRead(); boolean write=file.canWrite(); System.out.println(exist); System.out.println(read); System.out.println(write); ZipFile docxFile = new ZipFile(file);
现在新建一个 word,在请输入用户名处添加书签 userName,请输入年龄处添加书签 age
Word2007 版本其实就是 zip 格式,将新建 word 后缀名改.zip,解压会发现,里面全是文 件夹,打开 word 文件夹会有一个 document.xml 文件,在 word 所有内容,都在这 xml 文件中,
node.getElementsByTagName("w:t");// 获取w:r标签下的显示书签处
内容标签w:t
if (wtList.getLength() == 0) { // 如果不存
在,即,书签处本来就无内容,则添加需要替换的内容 oldBookStart.appendChild(wr);
Document doc = dbf.newDocumentBuilder().parse(documentXMLIS);
// linkMan tel proCode companyName fundName fundCode sysProCode
Map<String, String> bookMarkMap = new HashMap<String, String>();
docxOutFile.write(data, 0, readCount); docxOutFile.closeEntry(); } } docxOutFile.cl入的map集合比较 for (Map.Entry<String, String> entry : bookMarkMap.entrySet()) {
// 书签处值开始 Node wr = doc.createElement("w:r"); Node wt = doc.createElement("w:t"); Node wt_text = doc.createTextNode(entry.getValue()); wt.appendChild(wt_text); wr.appendChild(wt);
最近有个需求,在 word 模板文档上设置书签,然后从数据库中查询数据,填充到 word 文档书签位置,刚拿到需求时,使劲在网上找资料。幻想第三方 jar 包,帮我实现。有 Apatch 的 POI,java2word,jcob 等,一直让我无法实现。POI 操作 word 只能获取 word 中的书签,并 不能进行操作.java2word 可以实现,但是除了 java2word.jar 包以外,还要一个 dll 文件放在 system32 文件夹下,环境部署在 linux 服务器上,谁允许你放这样的文件,结果死心了.下面新 建一个 word2007 文件告诉大家不用第三方技术怎么一一实现。
//此处设定值需慎重,如果设置小了,会破坏word文档,至于为什么会破坏,
自己去思考 byte[] data = new byte[1024 * 512];
int readCount = incoming.read(data, 0, (int) entry.getSize());
docxOutFile.putNextEntry(new ZipEntry(entry.getName()));
分析 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 模板而论.
<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 了。
} else { // 如果书签处有内容,则直接替换内容
wtList.item(0);
Element wtNode = (Element)
wtNode.setTextContent(entry.getValue()); }
} }
} }
Transformer t = TransformerFactory.newInstance().newTransformer();
这样的思路是可以实现了,但是该怎么用 java 搞定呢,下面贴出代码
public static void modifyDocumentAndSave() throws IOException,
ZipException, SAXException, ParserConfigurationException,
//如果是document.xml则修改,别的文件直接拷贝,不改变word
的样式 if (entry.getName().equals("word/document.xml")) { byte[] data = baos.toByteArray(); docxOutFile.putNextEntry(new
// 返回ZipEntry应用程序接口
ZipEntry documentXML = docxFile.getEntry("word/document.xml");
InputStream documentXMLIS = docxFile.getInputStream(documentXML);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
ZipEntry(entry.getName())); docxOutFile.write(data, 0, data.length); docxOutFile.closeEntry();
} else { InputStream incoming =
docxFile.getInputStream(entry);
bookMarkMap.put("userName", "张三");
bookMarkMap.put("password", "888888");
/**
* 书签列表 */ NodeList this_book_list = doc.getElementsByTagName("w:bookmarkStart"); if (this_book_list.getLength() != 0) {
"D:\\response.docx")); Enumeration entriesIter = docxFile.entries(); while (entriesIter.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entriesIter.nextElement();
<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>