poi操作word 2007 常用方法总结
Office 2007中文版实用教程第1讲 Word 2007的基本操作
1.1.1 知识点讲解
二、保存文档 (1)保存文档 1)按Ctrl+S组合键。 2)单击【快速访问工具栏】中的 按钮。 3)单击 按钮,在打开的菜单中选择 【保存】命令。
1.1.1 知识点讲解
二、保存文档 (2)另存文档 1)按F12键。 2)单击 按钮,在打开的菜单中选择 【另存为】命令。
1.1.1 知识点讲解
第1讲 Word 2007的基本操作
1.1
Word Leabharlann 007的文档操作1.2Word 2007的文本编辑
1.3
Word 2007的文字格式化
1.1 Word 2007的文档操作
1.1.1 知识点讲解 1.1.2 范例解析 1.1.3 课堂练习
1.1.1 知识点讲解
一、新建文档 (1) 按Ctrl+N组合键。 (2) 单击 按钮,在打开的菜单中选择 【新建】命令。
三、打开文档 (1) 按Ctrl+O组合键。 (2) 单击 按钮,在打开的菜单中选择 【打开】命令。
1.1.1 知识点讲解
四、关闭文档 单击 按钮,在打开的菜单中选择【关 闭】命令。
1.1.2 范例解析
在Word 2007中,在文档中输入“这是我 的第1个文档。”,并以“第1个文档.docx” 文件名保存到【我的文档】文件夹中,然 后再把文档以“第1个文档.doc”文件名保 存到【我的文档】文件夹中,关闭文档。 再打开“第1个文档.docx”,并在文档末 尾加上一句话“文档打开后被修改过。”, 然后保存文档,关闭文档。
1.2.2 范例解析
原始文档内容 山鹰与狐狸 希腊 伊索 山鹰与狐狸互相结为好友,为了彼此的友谊更加巩固,他们决定住在一起.于是 鹰飞到一棵高树上面,筑起巢来孵育后代,狐狸则走进树下的灌木丛中间,生儿 育女. 有一天,狐狸出去觅食,鹰也正好断了炊,他便飞入灌木丛中,把幼小的狐狸抢 走,与雏鹰一起饱餐一顿.狐狸回来后,知道这事是鹰所做,他为儿女的死悲痛, 而最令他悲痛的是一时无法报仇,因为他是走兽,只能在地上跑,不能去追逐会 飞的鸟.因此他只好远远地站着诅咒敌人,这是力量弱小者唯一可以做到的事 情. 这故事说明,对于背信弃义的人,即使受害者弱小,不能报复他,可神会惩治他. 有一次,一些人在野外杀羊祭神,鹰飞下去,从祭坛上抓起了带着火的羊肉,带 回了自己的巢里.这时候一阵狂风吹了过来,巢里细小干枯的树枝马上燃起了 猛烈的火焰.那些羽毛未丰的雏鹰都被烧死了,并从树上掉了下来.狐狸便跑了 过去,在鹰的眼前,把那些小鹰全都吃了.
通过POI操作Word模版文档
for (String key : params.keySet()) {
if (str.equals(key)) { String text = ""+params.get(key);
XWPFRun run = para.createRun();
if(type.equals("1")){//表示页眉 run.setFontSize(10);
List<XWPFRun> runs;
if (this.matcher(para.getParagraphText()).find()) { runs = para.getRuns();
int start = -1; int end = -1; String str = "";
for (int i = 0; i < runs.size(); i++) { XWPFRun run = runs.get(i); String runText = run.toString();
Iterator<XWPFTable> iterator = doc.getTablesIterator(); XWPFTable table; List<XWPFTableRow> rows; List<XWPFTableCell> cells; List<XWPFParagraph> paras;
List<XWPFHeader> xwpfHeaderList = doc.getHeaderList(); Iterator iterator = xwpfHeaderList.iterator(); XWPFParagraph para; XWPFHeader xwpfHeader;
office_2007教程—技巧186招(Word2007、Excel2007)
(2)弹出“增减字符”对话框,在“可用字符”下选择相应的字符,然后单击“添加”按钮将其 添加到右侧的“已用字符”列表中,(比较简单的办法是直接双击,同时按下 Shift或 Ctrl键可以复选连 续或不连续的字符。)单击“关闭”按钮这些字符将出现在 Word 2007的编辑窗口。如图所示。 图 6 技巧4. Word精彩的稿纸功能
Page 2
Spaces(以下简称 Live Spaces)。无需登录空间的最安全的发布方法就在您眼前。具体步骤如下:
(1)在网络连接情况下,从“ Office”按钮下选择“新建”命令,打开“新建文档”对话框,在 对话框中选择“新博客文章”,再单击“创建”按钮。如图所示。 图 9
(2)您也可以用另一种方法。单击“视图”选项卡下“显示 /隐藏”选项组的“标尺”命令。当 “标尺”前的复选框被勾选时表示显示标尺,反之不显示。如图所示。
图 27 技巧19.批量设置 Word中的上下标 当用 Word输入平方、指数或者底数时,需要把该文字比平常文字往上移或往下移பைடு நூலகம்这时就需要用 到上标(或下标)功能。具体步骤如下:
(3)选择完成后,单击“保存”按钮,输出的网页文件就可以拿到其它计算机上演示,而且对作 品的效果影响不大,只是一些版式变化。 技巧2.去除 Word文件中的多余选项 在 Word菜单里,有一些多余的选项如快速访问栏中有“电子邮件”选项,如何去掉快速访问栏有 “电子邮件”选项呢?具体步骤如下:
(1)单击文档左上角的“ Office 按钮”,然后单击“Word选项”命令。如图所示。
图 17
(3)接着,可根据需要进行文本格式的设置,包括字体、字号、字型、字的颜色和对齐方式等。 如图所示。 图 18
(4)将光标定位到需要划分为下一张幻灯片处,直接按回车键,即可创建出一张新的幻灯片。经 过调整,很快就可以完成多张幻灯片的制作。 技巧13.快速切换文档
Office2007使用技巧
Office2007使用技巧1、更直观地比较文档内容在进行文档的修订时,很难区分修订前的内容和修订后的内容,Office Word 2007 增强的“比较”文档功能,可以更加直观的浏览文档修订前、后的不同。
首先,单击功能区中的“审阅”标签,然后单击“比较”选项组中的“比较”按钮,并在其下拉菜单中执行“比较”命令,打开“比较文档”对话框。
选择所要比较的“原文档”和“修订的文档”。
图1 选择比较的文档稍后,即可看到修订的具体内容,同时,比较的文档、原文档和修订的文档也将出现在比较结果文档中。
2、轻松解决语言障碍在Office Word 2007 中提供了强大的语言支持功能,可以更有效的帮助用户无障碍地阅读文档。
比如:当我们遇到不熟悉的单词或短语时,可以在该文档内容上单击鼠标右键,执行“翻译”命令,打开相应的翻译屏幕提示。
图3 执行“翻译”命令将鼠标移动的单词或短语的上方,就可以即时看到翻译的结果。
图4 将英文翻译成中文提示:此功能也可以在Excel 、PowerPoint 、Outlook 等应用程序中使用。
3、Alt键的妙用a. 按住Alt键(或同时按住鼠标上的两个按钮)再拖动左右(上下)边距,可精确调整其值(在标尺上会显示具体值)。
b. 按住Alt再进行相应操作,还可以精确调整图形、艺术字等“对象”的形状、大小和在文档中的位置等。
c. 按住Alt后单击任意单元格可快速选定单元格所在列。
按Alt键后双击表格中任意位置,可快速选定整个表格。
d. 按住Alt后拖动鼠标可以按列选定文本。
e. 按住Alt拖动菜单命令或工具栏上的图标可删除或移动该项到其他位置(同时还按住Ctrl则复制)。
4、双击、右击的妙用双击大多数对象,将弹出相应的设置对话框,可以快速设置有关项目;选定对象(或将光标置于特定位置)后右击,弹出的快速菜单常会出现工具栏和主菜单中没有的选项。
a. 双击横标尺上的空白灰色区域或竖标尺上任意位置,会弹出“页面设置”对话框。
Office-Word-2007使用技巧
Word2007版使用技巧★选定方法使用鼠标选定文本是最直接、最基本的选定方法,有以下几种方法:(1)按住鼠标左键并拖动,选择需要选定的文本的范围,然后释放鼠标左键;或者在所选内容的开始处单击鼠标左键,然后按住“Shift”键,并在所选内容结尾处单击鼠标左键,可选定任意数量的文本。
(2)双击鼠标左键,可选定一个单词或词组。
(3)将鼠标指针移到某行的左侧,直到鼠标变为形状时,单击鼠标左键,即可选定该行文本。
(4)将鼠标指针移到某行的左侧,直到鼠标变为要的位置,可选定多行文本。
(5)按住“Alt”键,然后拖动鼠标到需要位置,可选定垂直的一块文本。
(6)将鼠标指针移到段落的左侧,直到鼠标变为落的任意位置,即可选定该段落。
(7)将鼠标指针移到文档正文的左侧,直到鼠标变为形状时,按住“Alt”键,单击鼠标左键,或者三击鼠标左键,即可选定整篇文档。
★插入其它语种的特殊符号用Word进行文字处理时,往往要输入很多符号。
这里介绍几种常用的输入其他语种特殊符号的方法。
1.插入符号法单击“插入”菜单栏,选择“符号”命令,在里面可以选择拉丁语、希腊语等语种。
但是此法调用符号模块时间较长,加之在较大的篇幅内寻找需要的符号比较麻烦,因此有一定局限性。
2.利用软键盘功能法Windows内置的中文输入法提供了13种软键盘。
它们是:PC键盘、希腊字母键盘、俄文字母键盘、注音符号键盘、拼音键盘、日文平假名键盘、日文片假名键盘、标点符号键盘、数字序号键盘、数学符号键盘、单位符号键盘、制表符键盘、特殊符号键盘。
我们可以根据需要,进行不同的选择。
操作时,只须用鼠标右键单击输入法词条的软键盘图标,选中需要的软键盘,即可选定、插入符号。
3.利用英文字体设置在英文字体Wingdings和Webwings下,数字、英文字母和其它的一些字符显示为一些符号。
另外,以此类推,利用上述几种方法,还可以为用户的屏幕保护程序“三维文字”增加近200种特殊图案。
练就Office2007达人15个Word常用技巧
练就Office2007达人15个Word常用技巧微软Office办公软件是所有办公一族公认的功能强悍且不易掌握,虽说看见平常大家都在使用Office办公软件,然而可以发现身边要能把Office用到熟练级别的高手还是少得可怜。
Office办公软件就真的如此之难?其实也未必,只不过其中的很多功能也许是大家一般很难使用到,或是没能掌握一些操作技巧,因此感觉不熟悉也是正常的。
Word作为Office 办公软件中重要的文字处理工具广泛被应用,本文就是要介绍在使用Word中的15个常用技巧,帮助大家更好地使用Word,另外,稍后我们还会继续把Excel、PPT等组件的使用技巧介绍给大家,工作学习中不能缺少Office办公软件却又不太熟悉这款体积的用户,可要留心看了。
技巧1利用全新的实时预览功能试用标题样式在先前版本的Word中,如果不确定要为标题指定何种样式的字体,经常需要反复地应用多种样式来查看效果,一个不满意再撤销重换下一个样式。
但在Word 2007中,全新的实时预览功能可以让用户在应用某个样式之前轻松而快速地查看其应用后的效果,只需鼠标指向某个样式即可立即查看,省事又省时,极大地方便了用户。
操作方法如下:1.将光标定位在标题文本中的任意位置。
2.在默认显示于最前端的“开始”选项卡中,找到“样式”组,然后在其中单击“样式库”右下方的【其他】按钮。
3.在打开的“样式库”中,只需在给出的各种样式之间轻松滑动鼠标,标题文本就会自动呈现出当前样式应用后的视觉效果。
技巧2即时翻译文档中的英文单词具有屏幕取词功能的翻译软件可以帮助大家在阅读英文文档时流畅自如,但如果你在使用Office的过程中还要去安装其他第三方翻译软件,那你对自己手中的Office就太不了解了。
Microsoft Office Word 2007已经内置了强大的翻译功能,与你所熟悉的桌面词典软件一样即指即翻,使用方便。
操作步骤如下:1.在Word 2007的“功能区”中,切换到“审阅”选项卡。
使用poi读取word2007(.docx)中的复杂表格
使⽤poi读取word2007(.docx)中的复杂表格最近⼯作需要做⼀个读取word(.docx)中的表格,并以html形式输出。
这⾥使⽤了poi。
对于2007及之后的word⽂档,需要导⼊poi-ooxml-xxx.jar及其依赖包,如下图(图中为使⽤maven):pom.xml对于简单表格,可以使⽤如下⽅式来获取每个表格的内容:XWPFDocument document = new XWPFDocument(new FileInputStream("word.docx"));// 获取所有表格List<XWPFTable> tables = document.getTables();for (XWPFTable table : tables) {// 获取表格的⾏List<XWPFTableRow> rows = table.getRows();for (XWPFTableRow row : rows) {// 获取表格的每个单元格List<XWPFTableCell> tableCells = row.getTableCells();for (XWPFTableCell cell : tableCells) {// 获取单元格的内容String text = cell.getText();}}}但是对于复杂表格(含合并的单元格),则⽆法正常处理。
于是继续上⽹查询,在stackoverflow查到如下⽣成含有合并的单元格的表格:public class CreateWordTableMerge {static void mergeCellVertically(XWPFTable table, int col, int fromRow, int toRow) {for(int rowIndex = fromRow; rowIndex <= toRow; rowIndex++){CTVMerge vmerge = CTVMerge.Factory.newInstance();if(rowIndex == fromRow){// The first merged cell is set with RESTART merge valuevmerge.setVal(STMerge.RESTART);} else {// Cells which join (merge) the first one, are set with CONTINUEvmerge.setVal(STMerge.CONTINUE);}XWPFTableCell cell = table.getRow(rowIndex).getCell(col);// Try getting the TcPr. Not simply setting an new one every time.CTTcPr tcPr = cell.getCTTc().getTcPr();if (tcPr != null) {tcPr.setVMerge(vmerge);} else {// only set an new TcPr if there is not one alreadytcPr = CTTcPr.Factory.newInstance();tcPr.setVMerge(vmerge);cell.getCTTc().setTcPr(tcPr);}}}static void mergeCellHorizontally(XWPFTable table, int row, int fromCol, int toCol) {for(int colIndex = fromCol; colIndex <= toCol; colIndex++){CTHMerge hmerge = CTHMerge.Factory.newInstance();if(colIndex == fromCol){// The first merged cell is set with RESTART merge valuehmerge.setVal(STMerge.RESTART);} else {CTTcPr tcPr = cell.getCTTc().getTcPr();if (tcPr != null) {tcPr.setHMerge(hmerge);} else {// only set an new TcPr if there is not one alreadytcPr = CTTcPr.Factory.newInstance();tcPr.setHMerge(hmerge);cell.getCTTc().setTcPr(tcPr);}}}public static void main(String[] args) throws Exception {XWPFDocument document= new XWPFDocument();XWPFParagraph paragraph = document.createParagraph();XWPFRun run=paragraph.createRun();run.setText("The table:");//create tableXWPFTable table = document.createTable(3,5);for (int row = 0; row < 3; row++) {for (int col = 0; col < 5; col++) {table.getRow(row).getCell(col).setText("row " + row + ", col " + col);}}//create and set column widths for all columns in all rows//most examples don't set the type of the CTTblWidth but this//is necessary for working in all office versionsfor (int col = 0; col < 5; col++) {CTTblWidth tblWidth = CTTblWidth.Factory.newInstance();tblWidth.setW(BigInteger.valueOf(1000));tblWidth.setType(STTblWidth.DXA);for (int row = 0; row < 3; row++) {CTTcPr tcPr = table.getRow(row).getCell(col).getCTTc().getTcPr();if (tcPr != null) {tcPr.setTcW(tblWidth);} else {tcPr = CTTcPr.Factory.newInstance();tcPr.setTcW(tblWidth);table.getRow(row).getCell(col).getCTTc().setTcPr(tcPr);}}}//using the merge methodsmergeCellVertically(table, 0, 0, 1);mergeCellHorizontally(table, 1, 2, 3);mergeCellHorizontally(table, 2, 1, 4);paragraph = document.createParagraph();FileOutputStream out = new FileOutputStream("create_table.docx");document.write(out);System.out.println("create_table.docx written successully");}}运⾏⼀下确实可以实现,不过仍是⼀头雾⽔,对于其中的cTTc,tcPr,vMerge等属性仍是不知道是什么。
POI操作大全(动态合并单元格为单元格生成一个自定义的数据显示格式自定义公式计算结果生
POI操作大全(动态合并单元格为单元格生成一个自定义的数据显示格式自定义公式计算结果生POI是一个用于操作Microsoft Office格式文件的Java库。
通过POI库,可以实现对Excel、Word和PowerPoint文件的读写操作。
本文将介绍POI库的一些常用操作,包括动态合并单元格、为单元格生成自定义的数据显示格式、自定义公式计算结果等。
一、动态合并单元格在Excel中,可以将多个相邻的单元格合并成一个单元格,以便显示更大的数据块。
POI库可以很方便地实现对合并单元格的操作。
1.创建合并区域:```javaCellRangeAddress region = new CellRangeAddress(rowStart, rowEnd, colStart, colEnd);sheet.addMergedRegion(region);```其中,rowStart和rowEnd表示合并区域的起始行和结束行,colStart和colEnd表示合并区域的起始列和结束列。
2.设置合并单元格的值:```javaCell cell = sheet.getRow(rowStart).createCell(colStart);cell.setCellValue("合并单元格的值");```这里,我们取合并区域的起始行和起始列,设置单元格的值。
二、为单元格生成一个自定义的数据显示格式在Excel中,可以对单元格的值设置格式,以便以不同的方式展示数据。
POI库提供了设置单元格格式的方法。
1.创建格式对象:```javaCellStyle cellStyle = workbook.createCellStyle(;```2.设置格式:```javaDataFormat dataFormat = workbook.createDataFormat(;short format = dataFormat.getFormat("自定义格式");cellStyle.setDataFormat(format);```其中,"自定义格式"是Excel中的一种格式化字符串。
使用POI解析(txt,doc,docx,xls,xlsx)文件方法总结
使用POI解析(txt,doc,docx,xls,xlsx)文件方法总结第一篇:使用POI解析(txt,doc,docx,xls,xlsx)文件方法总结本人最近写了用POI解析txt,doc,docx,xls,xlsx等五个格式的文件,整理一下:可能写的不是很简单,但是可用。
最近上传文件,解析文件,我天天都在写,写的头都大了。
所有整理一下主要的核心的代码,即助人为乐,也给自己留个备份。
呵呵欢迎参考首先需要引用jar包:这些jar包网上都是可以找的到的1、首先要先读取到文件,String targetDirectory = ServletActionContext.getServletContext().getRealPath(“/wenjia n”);//获取路径这是获取服务器中wenjian这个文件夹下的所有文件。
//读取指定文件夹下的所有文件名称File file=new File(targetDirectory);String test[];test=file.list();所有的文件名称都在这个list中,用循环可以得到文件的后缀名for(int i=0;iFile f =new File(test[i]);String fileName=f.getName();String prefix=fileName.substring(stIndexOf(“.”)+1);//获取文件后缀名FileInputStream fis = new FileInputStream(targetDir ectory+“/”+test[i]);String fis2 = targetDirectory+“/”+test[i];不同的文件类型,使用不同的解析方法。
简单的代码如下:if(“doc”.equals(prefix)){WordExtractor wordExtractor;try {FileInputStream file = newFileInputStream(path);wordExtractor = new WordExtractor(file);String[] paragraph = for(int j=0;j}}} }ss += paragraph[j].toString();} catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace();if(“docx”.equals(prefix)){ try {} XWPFDocument xwdoc = new XWPFDocument(POIXMLDocument.openPackage(path));POIXMLTextExtractor ex = new XWPFWordExtractor(xwdoc);ss = ex.getText().trim();// TODO: handle exception e.printStackTrace();} catch(Exception e){ if(“xls”.equals(prefix)){ HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fis);//获得第一个工作表SheetHSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);//获得第一行RowHSSFRow hssfRow = hssfSheet.getRow(0);//用StringBuffer得到Excel表格一行的内容并用逗号分隔StringBuffer sb = new StringBuffer();for(int p=0;pXSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);// 循环行RowXSSFRow xssfRow = xssfSheet.getRow(0);// 循环列Cell//用StringBuffer得到Excel表格一行的内容并用逗号分隔StringBuffer sbs = new StringBuffer();for(int cellNum = 0;cellNum < xssfRow.getLastCellNum();cellNum++){ XSSFCell xssfCell = xssfRow.getCell(cellNum);sbs.append(xssfCell);int fc = xssfRow.getLastCellNum()-1;if(cellNum!=fc){ if(“xlsx”.equals(prefix)){ sbs.append(biaoshi); } } str = sbs.toString();list.add(str);} if(“txt”.equals(prefix)){这五种方法都是可行的,本人亲自测试过,而且自己也是这么用的,} BufferedReader reader;try {} reader = new BufferedReader(new FileReader(path));//reader.readLine();while(reader.ready()){ ss += reader.readLine();}reader.close();// TODO Auto-generated catch block e.printStackTrace();}catch(Exception e){第二篇:正畸历年大题总结LS名解Indidividualnormal occlusion个别正常合凡轻微的错颌畸形,对于生理过程无大妨碍者,都可列入正常范畴。
Office2007(word,excle)基础操作技巧大全
• 拥有 2000 到 2003 版 Word、Excel 或 PowerPoint(以及最新修补程序和 Service Pack) 的,可以打开 2007 文件。当打开时,系统将询问是否下载一个转换器,以便能打开高版本的文
档。
共二十页
内容摘要
Microsoft® Office 2007特色及新功能。经常用到的核心命令位于最显眼的位置。有时,一个名 为“对话框启动器”的箭头会显示在组的右下角。可以将经常使用的命令通过右 击弹出的快捷菜单添加到“快速(kuài sù)访问工具栏”。还可以通过已安装的模板 或在线模板新建文件。功能区上的每一个按钮都有对应的快捷方式。以 Ctrl 开 头的旧键盘快捷方式仍可以按以往的方式使用。在 Word 2007、Excel 2007 和 PowerPoint 2007 中,提供了一个直观的交互式参考指南来帮助您快速(kuài sù)了 解命令的位置。提高文件的安全性,减少文件损坏的几率。如果将文件保存 为模板,则应用同样的规则:在旧的模板扩展名后加上一个“x”
• 快捷方式所需的键减少了。 以 Ctrl 开头(kāi tóu)的旧键盘快捷方式仍可以按以往的方式使用。
共二十页
新的快捷方式Biblioteka 示例:在 Word中使用键提示删除标题样式(yàngshì) 1 按 Alt 以显示键提示。
2 按 H 选择“开始”选项卡。
3 按 E 选择“清除格式”按钮(位于“字体”组中)以删除标题样式。
共二十页
新建文档
要进入新建窗口,可从单击窗口左上角的“Office 按钮”,然后,单击“新建” 还可以通过已安装的模板或在线(zài xiàn)模板新建文件
共二十页
新的快捷方式
新的快捷方式也 有一个新名称 (míngchēng):键 提示。
POI读取word(word2003和word2007)(转)
POI读取word(word2003和word2007)(转)最近在给客户做系统的时候,⽤户提出需求,要能够导⼊ word ⽂件,现在 microsoft word 有好⼏个版本 97、2003、2007的,这三个版本存储数据的格式上都有相当⼤的差别,⽽现在 97 基本上已经退出市场,⼏乎没有⼈⽤这个版本了,所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只要求能够读取 word 中的⽂字内容即可,其中的⽂字样式、图⽚等信息可以忽略,也不⽤直接操作 word ⽂件,所以我们选择⽤ apache 的 POI 进⾏读取。
读取 2003 版本(.doc)的word⽂件相对来说⽐较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.jar 两个jar 包即可,⽽ 2007 版本(.docx)就⿇烦多,我说的这个⿇烦不是我们写代码的时候⿇烦,是要导⼊的 jar 包⽐较的多,有如下 7 个之多: 1. openxml4j-bin-beta.jar 2. poi-3.5-beta6-20090622.jar 3. poi-ooxml-3.5-beta6-20090622.jar 4 .dom4j-1.6.1.jar 5. geronimo-stax-api_1.0_spec-1.0.jar 6. ooxml-schemas-1.0.jar 7. xmlbeans-2.3.0.jar 其中 4-7 是 poi-ooxml-3.5-beta6-20090622.jar 所依赖的 jar 包(在poi-bin-3.5-beta6-20090622.tar.gz 中的 ooxml-lib ⽬录下可以找到)。
[java]1. import java.io.File;2. import java.io.FileInputStream;3. import java.io.InputStream;4.5. import org.apache.poi.POIXMLDocument;6. import org.apache.poi.POIXMLTextExtractor;7. import org.apache.poi.hwpf.extractor.WordExtractor;8. import org.apache.poi.openxml4j.opc.OPCPackage;9. import org.apache.poi.xwpf.extractor.XWPFWordExtractor;10.11. /**12. * POI 读取 word 2003 和 word 2007 中⽂字内容的测试类<br />13. * @createDate 2009-07-2514. * @author Carl He15. */16. public class Test {17. public static void main(String[] args) {18. try {19. //word 2003:图⽚不会被读取20. InputStream is = new FileInputStream(new File("c://files//2003.doc"));21. WordExtractor ex = new WordExtractor(is);22. String text2003 = ex.getText();23. System.out.println(text2003);24.25. //word 2007 图⽚不会被读取,表格中的数据会被放在字符串的最后26. OPCPackage opcPackage = POIXMLDocument.openPackage("c://files//2007.docx");27. POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);28. String text2007 = extractor.getText();29. System.out.println(text2007);30.31. } catch (Exception e) {32. e.printStackTrace();33. }34. }35. }如果想下载完整的⽰例代码,可以,这个 rar 包中有 POI 读取word 2003 和 word 2007 所需要的全部 jar 包和 word 2003、word 2007 ⽰例⽂件。
用poi解析word 总结
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace(); }
sb.append(cr.getFontSize());
sb.append("pt;font-family:");
sb.append(cr.getFontName());
sb.append("'>");
String s1=p1.suggestFullFileName();
String s2=p1.suggestFileExtension();
System.out.println("------"+s1+"-----"+s2);
System.out.println(p1.getAspectRatioX()+" "+p1.getAspectRatioY());
}
2. 获得word的段落
File file = new File("F://test.doc");
try {
FileInputStream fis = new FileInputStream(file);
WordExtractor wordExtractor = new WordExtractor(fis);
if(range.text().hashCode() != 13){
poi操作word文档文件操作
import ermodel.XWPFComment;
import ermodel.XWPFDocument;
public class MyWordExtractor {
public static void main(String[] args) {
File file = new File("E:\\POI\\word\\JBoss3.0 下配置和部署EJB简介.doc");
try {
for(int i=0;i<paragraph.length;i++){
System.out.println("< 第 "+(i+1)+" 段的内容为 >");
System.out.println(paragraph[i]);
}
} catch (FileNotFoundException e) {
comment.getAuthor();//提取批注修改人
comment.getText();//提取批注内容
}
五:利用POI提取Word总页数、总字符数...
97-2003
WordExtractor doc = new WordExtractor(new FileInputStream(filePath));//.doc格式Word文件提取器
//得到.docx文件提取器
org.apache.poi.xwpf.extractor.XWPFWordExtractor docx = new XWPFWordExtractor(POIXMLDocument.openPackage(filePath));
Office2007操作技巧(Word)
一、巧选文本介绍用多种方法选择Word 中的文本。
如果希望同一篇Word文档中页码分成两个阶段,分别排序,则需要在两部分之间插入分节符,选择【页面布局】-【分隔符】-【分节符】。
接下来在第二部分的页码位置双击,在【页眉页脚工具】的【设计】中,关闭【链接到前一条页眉】按钮,之后重新设置第二部分的页码属性,让其从“1”开始排序。
二、即时翻译介绍如何使用Word进行不同语言的互译。
理公文时往往会遇到不认识的单词,或者需要将某一单词翻译成其他的语言。
在Word中,只要按住【ALT】键,再用鼠标点击这个单词,即可在右侧的【信息检索】任务窗格看到翻译的结果。
并且还可以选择多种语言互译,这一招在IE浏览器中也同样适用!另外,还可以在【审阅】选项卡中打开【屏幕翻译提示】功能,即可实现鼠标悬停查询单词的功能。
三、字体无级缩放大法介绍如何快速调整文字大小,实现自由缩放。
通过Word 2007中【显示比例】缩放划杆可以“无级缩放”页面视图,其实对于文档中的字体大小也能够快速进行缩放。
只需要选中文字,通过【Ctrl】+【[】(左方括号)组合键即可缩小字体,按下【Ctrl】+【]】(右方括号)组合键即可增大字体。
这招在PowerPoint中也适用!四、快速插入预定义内容介绍在文档中如何快速插入预定义好的内容,简化操作。
Word 中的自动更正功能可以在您的单词或词组拼写错误时自动修正成正确的写法。
这个功能也可以帮助您快速输入频繁使用的特定内容。
只需先在Word文档中输入这部分内容,例如您的地址签名行,然后用鼠标将其选中,再在【Office按钮】-【Word选项】中选择【校对】-【自动更正选项】,在【替换】位置输入一个特定的符号,例如"*add*",点击【添加】并确定。
以后再需要输入这段内容的时候,只需输入*add*即可。
此方法不光可以添加文字,图文及表格的混排都适用!五、自动重复标题行如何在换页时自动重复Word中表格的标题行。
POI操作常用方法
POI操作常用方法POI(Poor Obfuscation Implementation)是一种用于操作Microsoft Office文件的Java库。
它提供了对Excel、Word和PowerPoint等文件的创建、读写和修改的功能。
POI操作常用的方法包括文件的创建、读取和写入、单元格的操作、格式设置、图表的创建和修改等。
1.文件的创建与读取:- 创建一个Excel文件:```Workbook workbook = new XSSFWorkbook(; // 创建一个新的Excel 文件Sheet sheet = workbook.createSheet("Sheet1"); // 创建一个名为Sheet1的工作表```- 读取一个Excel文件:```InputStream inputStream = newFileInputStream("path/to/file.xlsx");Workbook workbook = new XSSFWorkbook(inputStream); // 读取Excel文件Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表```2.单元格的操作:-创建一个单元格并设置值:```Row row = sheet.createRow(0); // 创建第一行Cell cell = row.createCell(0); // 创建第一列cell.setCellValue("Hello World"); // 设置单元格的值```-获取单元格的值:```Row row = sheet.getRow(0); // 获取第一行Cell cell = row.getCell(0); // 获取第一列String value = cell.getStringCellValue(; // 获取单元格的值```3.格式设置:-设置单元格的样式:```CellStyle style = workbook.createCellStyle(; // 创建样式对象Font font = workbook.createFont(; // 创建字体对象font.setBold(true); // 设置字体为粗体style.setFont(font); // 将字体应用于样式cell.setCellStyle(style); // 将样式应用于单元格```-设置单元格的格式:```DataFormat format = workbook.createDataFormat(; // 创建数据格式对象CellStyle style = workbook.createCellStyle(; // 创建样式对象style.setDataFormat(format.getFormat("#,#.00")); // 设置数据的格式,如数字格式为千分位cell.setCellStyle(style); // 将样式应用于单元格```4.图表的创建与修改:-创建一个柱状图:```Drawing<?> drawing = sheet.createDrawingPatriarch(; // 创建图纸对象ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15); // 定义图表的位置和大小Chart chart = drawing.createChart(anchor); // 创建图表对象ChartAxis bottomAxis =chart.getChartAxisFactory(.createCategoryAxis(AxisPosition.BOTTO M); // 创建X轴对象ChartAxis leftAxis =chart.getChartAxisFactory(.createValueAxis(AxisPosition.LEFT); // 创建Y轴对象。
POI解析word2007文本及图片(已测试)
package com.xinyitech.etl.tc.ext.parsers.docx;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import java.util.ArrayList;import java.util.List;import mons.logging.Log;import mons.logging.LogFactory;import org.apache.poi.POIXMLDocument;import org.apache.poi.POIXMLTextExtractor;import org.apache.poi.hslf.model.Picture;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.poifs.filesystem.POIFSFileSystem;import org.apache.poi.xwpf.extractor.XWPFWordExtractor;import ermodel.XWPFDocument;import ermodel.XWPFPicture;import ermodel.XWPFPictureData;import com.xinyitech.etl.tc.base.CodeGenerate;import com.xinyitech.etl.tc.base.datafile.DataFile;import com.xinyitech.etl.tc.base.datafile.DataFileWriter;import com.xinyitech.etl.tc.base.datafile.RowDataUtils;import com.xinyitech.etl.tc.base.model.WjqdModel;import com.xinyitech.etl.tc.base.parser.Parser;import com.xinyitech.etl.tc.base.parser.ParserResultInfo;import com.xinyitech.etl.tc.ext.parsers.doc.DocParser;import com.xinyitech.etl.tc.ext.parsers.doc.DocParserTest;import com.xinyitech.etl.tc.utils.ByteUtils;/*****@author<a href="mailto: "></a>*@since 1.0*@version$Id:DocxParser.java,v 1.12011/09/0701:34:39Exp$*/public class DocxParser implements Parser{private Log log = LogFactory.getLog(DocxParser.class);public ParserResultInfo paser(String pcbh, File document, String destDir) throws Exception{log.debug("Starting paser "+document.getPath()+", the dest directory is "+destDir+" .");ParserResultInfo resultInfo = new ParserResultInfo();int resultCode = ParserResultInfo.RS_CODE_SUCCESS;DataFileWriter dataFileWriter = null;File wordDocx = document ;//功能代码try{String convertcontents = extractContent(wordDocx);String destFileCode =CodeGenerate.getInstance().generateTransFileCode(pcbh);String destFileName =destFileCode+DataFile.DATA_FILE_SUFFIX;File destFile = new File(destDir, destFileName);dataFileWriter = new DataFileWriter(pcbh, destFileCode, destFile);ParserResultInfo.DestFileInfo destFileInfo =resultInfo.getDestFileInfoInstance();destFileInfo.setDestFileCode(destFileCode);destFileInfo.setDestFileName(destFileName);destFileInfo.setDestCnName("");destFileInfo.setDestfilePath(destFile.getPath());destFileInfo.setLth(0);destFileInfo.setQsh(5);destFileInfo.setDestFileAvgColNum(0);destFileInfo.setDestFileStyle(WjqdModel.WJYS_FGSH_WB);if (null != convertcontents) {String[] contentstr = convertcontents.split("\n");String[] subcontents = null ;for(int i=0; i<contentstr.length; i++){subcontents = contentstr[i].split("\t") ;dataFileWriter.writeLine(RowDataUtils.warpRowData(subcontents));}resultInfo.addDestFileResult(destFileInfo);extractImage(wordDocx);}}catch(Exception e){log.error(e.getMessage(),e);}finally{try {if (null != dataFileWriter) {dataFileWriter.close();}} catch (Exception e) {log.error(e.getMessage(), e);}}return resultInfo;}/***抽取文件文本内容*/public String extractContent(File document){String contents = "" ;String wordDocxPath = document.toString();StringBuffer sbf = new StringBuffer();try{//载入文档OPCPackage opcPackage =POIXMLDocument.openPackage(wordDocxPath);XWPFDocument xwpfd = new XWPFDocument(opcPackage);POIXMLTextExtractor ex = new XWPFWordExtractor(xwpfd);//读取文字contents = ex.getText().trim();//System.out.println(ByteUtils.byteToHexString(contents.getBytes()));}catch(Exception e){e.printStackTrace();}return contents;}/***抽取文件中的图片,并保存*/public void extractImage(File document){try {String imgPath = "D:/sjqxgj/datafile/img" ;String wordDocxPath = document.toString();//载入文档FileInputStream fis = new FileInputStream(wordDocxPath);OPCPackage opcPackage =POIXMLDocument.openPackage(wordDocxPath);XWPFDocument xwpfd = new XWPFDocument(opcPackage);//建立图片文件目录File imgFile = new File(imgPath);if(!imgFile.exists()){imgFile.mkdir();}//获取所图片List piclist = xwpfd.getAllPictures();for(int j = 0; j < piclist.size(); j++){X WPFPictureData pic = (XWPFPictureData) piclist.get(j) ;//获取图片数据流b yte[] picbyte = pic.getData();//将图片写入本地文件F ileOutputStream fos = new FileOutputStream(imgPath +"/"+ document.getName()+j +".jpg");f os.write(picbyte);}}catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}。
Office2007详细教程(免费)
Office2007详细教程(免费)Office 2007详细教程(免费)Office 2007是微软公司发布的办公软件套件,包括Word、Excel、PPT等常用办公软件。
本文档将为您提供Office 2007的详细教程,并帮助您了解如何使用这些软件。
WordWord是一款强大的文字处理软件,可以用于创建和编辑文档。
以下是一些常用的Word功能和操作步骤:- 创建新文档:点击"文件"选项卡,选择"新建",然后选择"空白文档"来创建一个新的Word文档。
创建新文档:点击"文件"选项卡,选择"新建",然后选择"空白文档"来创建一个新的Word文档。
- 插入图片:点击"插入"选项卡,选择"图片",然后从计算机中选择要插入的图片。
插入图片:点击"插入"选项卡,选择"图片",然后从计算机中选择要插入的图片。
- 设置页面布局:点击"页面布局"选项卡,可以设置页面的大小、边距、方向等。
设置页面布局:点击"页面布局"选项卡,可以设置页面的大小、边距、方向等。
- 使用样式:在"开始"选项卡中,可以选择不同的样式来改变文字的字体、大小、颜色等。
使用样式:在"开始"选项卡中,可以选择不同的样式来改变文字的字体、大小、颜色等。
- 保存和打印文档:点击"文件"选项卡,选择"保存"来保存文档,并且可以选择"打印"来打印文档。
保存和打印文档:点击"文件"选项卡,选择"保存"来保存文档,并且可以选择"打印"来打印文档。
ExcelExcel是一款广泛用于数据处理和计算的电子表格软件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
poi操作word 2007 常用方法总结import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.math.BigInteger;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import ng3.StringUtils;import org.apache.poi.POIXMLDocument;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;import ermodel.BodyElementType;import ermodel.Borders;import ermodel.BreakType;import ermodel.Document;import ermodel.IBodyElement;import ermodel.ParagraphAlignment;import ermodel.TextAlignment;import ermodel.VerticalAlign;import ermodel.XWPFDocument;import ermodel.XWPFParagraph;import ermodel.XWPFRelation;import ermodel.XWPFRun;import ermodel.XWPFTable;import ermodel.XWPFTableCell;import ermodel.XWPFTableRow;import org.apache.xmlbeans.XmlException;import org.apache.xmlbeans.XmlToken;import org.apache.xmlbeans.impl.xb.xmlschema.SpaceAttribute;import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps; import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBackground; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTColor;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTEm;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFldChar; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHighlight; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHpsMeasure; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTMarkupRange; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageBorders; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTParaRPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSignedTwipsMeasure; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGridCol;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTextScale;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTUnderline;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STEm;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFldCharType; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHdrFtr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHeightRule; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STPageOrientation; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalAlignRun;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;public class POI_Word2007_工具类_S3_Test {// 替换复制表格段落/*------------------------------------Word 插入书签--------------------------------------------------- *//*** @Description: 添加书签*/public void addParagraphContentBookmarkBasicStyle(XWPFParagraph p,String content, BigInteger markId, String bookMarkName,boolean isInsert, boolean isNewLine, String fontFamily,String fontSize, String colorVal, boolean isBlod,boolean isUnderLine, String underLineColor,STUnderline.Enum underStyle, boolean isItalic, boolean isStrike) {CTBookmark bookStart = p.getCTP().addNewBookmarkStart();bookStart.setId(markId);bookStart.setName(bookMarkName);XWPFRun pRun = getOrAddParagraphFirstRun(p, isInsert, isNewLine);setParagraphRunFontInfo(p, pRun, content, fontFamily, fontSize);setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,underLineColor, underStyle, isItalic, isStrike, false, false, false, false, false, false, false, null, false, null, false,null, null, null, 0, 0, 0);CTMarkupRange bookEnd = p.getCTP().addNewBookmarkEnd();bookEnd.setId(markId);}/*** @Description: 添加书签*/public void addParagraphContentBookmark(XWPFParagraph p, String content, BigInteger markId, String bookMarkName, boolean isInsert, boolean isNewLine, String fontFamily, String fontSize,String colorVal, boolean isBlod, boolean isUnderLine,String underLineColor, STUnderline.Enum underStyle,boolean isItalic, boolean isStrike, boolean isDStrike,boolean isShadow, boolean isVanish, boolean isEmboss,boolean isImprint, boolean isOutline, boolean isEm,STEm.Enum emType, boolean isHightLight,STHighlightColor.Enum hightStyle, boolean isShd,STShd.Enum shdStyle, String shdColor, VerticalAlign verticalAlign, int position, int spacingValue, int indent) {CTBookmark bookStart = p.getCTP().addNewBookmarkStart();bookStart.setId(markId);bookStart.setName(bookMarkName);XWPFRun pRun = getOrAddParagraphFirstRun(p, isInsert, isNewLine);setParagraphRunFontInfo(p, pRun, content, fontFamily, fontSize);setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,underLineColor, underStyle, isItalic, isStrike, isDStrike,isShadow, isVanish, isEmboss, isImprint, isOutline, isEm,emType, isHightLight, hightStyle, isShd, shdStyle, shdColor,verticalAlign, position, spacingValue, indent);CTMarkupRange bookEnd = p.getCTP().addNewBookmarkEnd();bookEnd.setId(markId);}/*------------------------------------Word 插入超链接--------------------------------------------------- *//*** @Description: 默认的超链接样式*/public void addParagraphTextHyperlinkBasicStyle(XWPFParagraph paragraph,String url, String text, String fontFamily, String fontSize,String colorVal, boolean isBlod, boolean isItalic, boolean isStrike) {addParagraphTextHyperlink(paragraph, url, text, fontFamily, fontSize,colorVal, isBlod, true, "0000FF", STUnderline.SINGLE, isItalic,isStrike, false, false, false, false, false, false, false,null, false, null, false, null, null, null, 0, 0, 0);}/*** @Description: 设置超链接样式*/public void addParagraphTextHyperlink(XWPFParagraph paragraph, String url, String text, String fontFamily, String fontSize, String colorVal, boolean isBlod, boolean isUnderLine, String underLineColor,STUnderline.Enum underStyle, boolean isItalic, boolean isStrike, boolean isDStrike, boolean isShadow, boolean isVanish,boolean isEmboss, boolean isImprint, boolean isOutline,boolean isEm, STEm.Enum emType, boolean isHightLight,STHighlightColor.Enum hightStyle, boolean isShd,STShd.Enum shdStyle, String shdColor,STVerticalAlignRun.Enum verticalAlign, int position,int spacingValue, int indent) {// Add the link as External relationshipString id = paragraph.getDocument().getPackagePart().addExternalRelationship(url,XWPFRelation.HYPERLINK.getRelation()).getId();// Append the link and bind it to the relationshipCTHyperlink cLink = paragraph.getCTP().addNewHyperlink(); cLink.setId(id);// Create the linked textCTText ctText = CTText.Factory.newInstance();ctText.setStringValue(text);CTR ctr = CTR.Factory.newInstance();CTRPr rpr = ctr.addNewRPr();if (StringUtils.isNotBlank(fontFamily)) {// 设置字体CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr .addNewRFonts();fonts.setAscii(fontFamily);fonts.setEastAsia(fontFamily);fonts.setHAnsi(fontFamily);}if (StringUtils.isNotBlank(fontSize)) {// 设置字体大小CTHpsMeasure sz = rpr.isSetSz() ? rpr.getSz() : rpr.addNewSz(); sz.setVal(new BigInteger(fontSize));CTHpsMeasure szCs = rpr.isSetSzCs() ? rpr.getSzCs() : rpr.addNewSzCs();szCs.setVal(new BigInteger(fontSize));}// 设置超链接样式// 字体颜色if (StringUtils.isNotBlank(colorVal)) {CTColor color = CTColor.Factory.newInstance();color.setVal(colorVal);rpr.setColor(color);}// 加粗if (isBlod) {CTOnOff bCtOnOff = rpr.addNewB();bCtOnOff.setVal(STOnOff.TRUE);}// 下划线if (isUnderLine) {CTUnderline udLine = rpr.addNewU();udLine.setVal(underStyle);udLine.setColor(underLineColor);}// 倾斜if (isItalic) {CTOnOff iCtOnOff = rpr.addNewI();iCtOnOff.setVal(STOnOff.TRUE);}// 删除线if (isStrike) {CTOnOff sCtOnOff = rpr.addNewStrike(); sCtOnOff.setVal(STOnOff.TRUE);}// 双删除线if (isDStrike) {CTOnOff dsCtOnOff = rpr.addNewDstrike();dsCtOnOff.setVal(STOnOff.TRUE);}// 阴影if (isShadow) {CTOnOff shadowCtOnOff = rpr.addNewShadow(); shadowCtOnOff.setVal(STOnOff.TRUE);}// 隐藏if (isVanish) {CTOnOff vanishCtOnOff = rpr.addNewVanish(); vanishCtOnOff.setVal(STOnOff.TRUE);}// 阳文if (isEmboss) {CTOnOff embossCtOnOff = rpr.addNewEmboss(); embossCtOnOff.setVal(STOnOff.TRUE);}// 阴文if (isImprint) {CTOnOff isImprintCtOnOff = rpr.addNewImprint(); isImprintCtOnOff.setVal(STOnOff.TRUE);}// 空心if (isOutline) {CTOnOff isOutlineCtOnOff = rpr.addNewOutline(); isOutlineCtOnOff.setVal(STOnOff.TRUE);}// 着重号if (isEm) {CTEm em = rpr.addNewEm();em.setVal(emType);}// 突出显示文本if (isHightLight) {if (hightStyle != null) {CTHighlight hightLight = rpr.addNewHighlight();hightLight.setVal(hightStyle);}}if (isShd) {// 设置底纹CTShd shd = rpr.addNewShd();if (shdStyle != null) {shd.setVal(shdStyle);}if (shdColor != null) {shd.setColor(shdColor);}}// 上标下标if (verticalAlign != null) {rpr.addNewVertAlign().setVal(verticalAlign);}// 设置文本位置rpr.addNewPosition().setVal(new BigInteger(String.valueOf(position)));if (spacingValue != 0) {// 设置字符间距信息CTSignedTwipsMeasure ctSTwipsMeasure = rpr.addNewSpacing();ctSTwipsMeasure.setVal(new BigInteger(String.valueOf(spacingValue)));}// 设置字符间距缩进if (indent > 0) {CTTextScale paramCTTextScale = rpr.addNewW();paramCTTextScale.setVal(indent);}ctr.setTArray(new CTText[] { ctText });cLink.setRArray(new CTR[] { ctr });}/*------------------------------------Word 页眉页脚相关--------------------------------------------------- *//*** @Description: 页脚:显示页码信息*/public void simpleNumberFooter(XWPFDocument document) throws Exception { CTP ctp = CTP.Factory.newInstance();XWPFParagraph codePara = new XWPFParagraph(ctp, document);XWPFRun r1 = codePara.createRun();r1.setText("第");setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");r1 = codePara.createRun();CTFldChar fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.BEGIN);r1 = codePara.createRun();CTText ctText = r1.getCTR().addNewInstrText();ctText.setStringValue("PAGE \\* MERGEFORMAT");ctText.setSpace(SpaceAttribute.Space.PRESERVE);setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.END);r1 = codePara.createRun();r1.setText("页总共");setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");r1 = codePara.createRun();fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.BEGIN);r1 = codePara.createRun();ctText = r1.getCTR().addNewInstrText();ctText.setStringValue("NUMPAGES \\* MERGEFORMAT ");ctText.setSpace(SpaceAttribute.Space.PRESERVE);setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.END);r1 = codePara.createRun();r1.setText("页");setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");setParagraphAlignInfo(codePara, ParagraphAlignment.CENTER,TextAlignment.CENTER);codePara.setBorderTop(Borders.THICK);XWPFParagraph[] newparagraphs = new XWPFParagraph[1];newparagraphs[0] = codePara;CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();XWPFHeaderFooterPolicy headerFooterPolicy = new XWPFHeaderFooterPolicy( document, sectPr);headerFooterPolicy.createFooter(STHdrFtr.DEFAULT, newparagraphs);}/*** @Description: 页眉:显示时间信息*/public void simpleDateHeader(XWPFDocument document) throws Exception {CTP ctp = CTP.Factory.newInstance();XWPFParagraph codePara = new XWPFParagraph(ctp, document);XWPFRun r1 = codePara.createRun();CTFldChar fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.BEGIN);r1 = codePara.createRun();CTText ctText = r1.getCTR().addNewInstrText();ctText.setStringValue("TIME \\@ \"EEEE\"");ctText.setSpace(SpaceAttribute.Space.PRESERVE);setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.END);r1 = codePara.createRun();r1.setText("年");setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");r1 = codePara.createRun();fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.BEGIN);r1 = codePara.createRun();ctText = r1.getCTR().addNewInstrText();ctText.setStringValue("TIME \\@ \"O\"");ctText.setSpace(SpaceAttribute.Space.PRESERVE);setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.END);r1 = codePara.createRun();r1.setText("月");r1.setFontSize(11);setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22"); r1 = codePara.createRun();fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.BEGIN);r1 = codePara.createRun();ctText = r1.getCTR().addNewInstrText();ctText.setStringValue("TIME \\@ \"A\"");ctText.setSpace(SpaceAttribute.Space.PRESERVE);setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");fldChar = r1.getCTR().addNewFldChar();fldChar.setFldCharType(STFldCharType.END);r1 = codePara.createRun();r1.setText("日");r1.setFontSize(11);setParagraphRunFontInfo(codePara, r1, null, "微软雅黑", "22");setParagraphAlignInfo(codePara, ParagraphAlignment.CENTER,TextAlignment.CENTER);codePara.setBorderBottom(Borders.THICK);XWPFParagraph[] newparagraphs = new XWPFParagraph[1];newparagraphs[0] = codePara;CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();XWPFHeaderFooterPolicy headerFooterPolicy = new XWPFHeaderFooterPolicy(document, sectPr);headerFooterPolicy.createHeader(STHdrFtr.DEFAULT, newparagraphs);}/*------------------------------------Word 段落相关--------------------------------------------------- *//*** @Description: 得到段落CTPPr*/public CTPPr getParagraphCTPPr(XWPFParagraph p) {CTPPr pPPr = null;if (p.getCTP() != null) {if (p.getCTP().getPPr() != null) {pPPr = p.getCTP().getPPr();} else {pPPr = p.getCTP().addNewPPr();}}return pPPr;}/*** @Description: 得到XWPFRun的CTRPr*/public CTRPr getRunCTRPr(XWPFParagraph p, XWPFRun pRun) { CTRPr pRpr = null;if (pRun.getCTR() != null) {pRpr = pRun.getCTR().getRPr();if (pRpr == null) {pRpr = pRun.getCTR().addNewRPr();}} else {pRpr = p.getCTP().addNewR().addNewRPr();}return pRpr;}public XWPFRun getOrAddParagraphFirstRun(XWPFParagraph p, boolean isInsert, boolean isNewLine) {XWPFRun pRun = null;if (isInsert) {pRun = p.createRun();} else {if (p.getRuns() != null && p.getRuns().size() > 0) {pRun = p.getRuns().get(0);} else {pRun = p.createRun();}}if (isNewLine) {pRun.addBreak();}return pRun;}public void setParagraphTextFontInfo(XWPFParagraph p, boolean isInsert, boolean isNewLine, String content, String fontFamily,String fontSize) {XWPFRun pRun = getOrAddParagraphFirstRun(p, isInsert, isNewLine);setParagraphRunFontInfo(p, pRun, content, fontFamily, fontSize);}/*** @Description 设置字体信息*/public void setParagraphRunFontInfo(XWPFParagraph p, XWPFRun pRun,String content, String fontFamily, String fontSize) {CTRPr pRpr = getRunCTRPr(p, pRun);if (StringUtils.isNotBlank(content)) {pRun.setText(content);}// 设置字体CTFonts fonts = pRpr.isSetRFonts() ? pRpr.getRFonts() : pRpr.addNewRFonts();fonts.setAscii(fontFamily);fonts.setEastAsia(fontFamily);fonts.setHAnsi(fontFamily);// 设置字体大小CTHpsMeasure sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();sz.setVal(new BigInteger(fontSize));CTHpsMeasure szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr.addNewSzCs();szCs.setVal(new BigInteger(fontSize));}/*** @Description: 设置段落基本样式*/public void setParagraphTextBasicStyleInfo(XWPFParagraph p, XWPFRun pRun,String colorVal, boolean isBlod, boolean isUnderLine,String underLineColor, STUnderline.Enum underStyle,boolean isItalic, boolean isStrike, boolean isHightLight,STHighlightColor.Enum hightStyle, boolean isShd,STShd.Enum shdStyle, String shdColor) {setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,underLineColor, underStyle, isItalic, isStrike, false, false,false, false, false, false, false, null, isHightLight,hightStyle, isShd, shdStyle, shdColor, null, 0, 0, 0);}/*** @Description: 设置段落文本样式(高亮与底纹显示效果不同)设置字符间距信息(CTSignedTwips Measure)* @param verticalAlign* : SUPERSCRIPT上标 SUBSCRIPT下标* @param position* :字符间距位置:>0提升 <0降低=磅值*2 如3磅=6* @param spacingValue* :字符间距间距 >0加宽 <0紧缩 =磅值*20 如2磅=40* @param indent* :字符间距缩进 <100 缩*/public void setParagraphTextSimpleStyleInfo(XWPFParagraph p, XWPFRun pRun,String colorVal, boolean isBlod, boolean isUnderLine,String underLineColor, STUnderline.Enum underStyle,boolean isItalic, boolean isStrike, boolean isHightLight,STHighlightColor.Enum hightStyle, boolean isShd,STShd.Enum shdStyle, String shdColor, VerticalAlign verticalAlign, int position, int spacingValue, int indent) {setParagraphTextStyleInfo(p, pRun, colorVal, isBlod, isUnderLine,underLineColor, underStyle, isItalic, isStrike, false, false,false, false, false, false, false, null, isHightLight,hightStyle, isShd, shdStyle, shdColor, verticalAlign, position,spacingValue, indent);}/*** @Description: 设置段落文本样式(高亮与底纹显示效果不同)设置字符间距信息(CTSignedTwips Measure)* @param verticalAlign* : SUPERSCRIPT上标 SUBSCRIPT下标* @param position* :字符间距位置:>0提升 <0降低=磅值*2 如3磅=6* @param spacingValue* :字符间距间距 >0加宽 <0紧缩 =磅值*20 如2磅=40* @param indent* :字符间距缩进 <100 缩*/public void setParagraphTextStyleInfo(XWPFParagraph p, XWPFRun pRun, String colorVal, boolean isBlod, boolean isUnderLine,String underLineColor, STUnderline.Enum underStyle,boolean isItalic, boolean isStrike, boolean isDStrike,boolean isShadow, boolean isVanish, boolean isEmboss,boolean isImprint, boolean isOutline, boolean isEm,STEm.Enum emType, boolean isHightLight,STHighlightColor.Enum hightStyle, boolean isShd,STShd.Enum shdStyle, String shdColor, VerticalAlign verticalAlign, int position, int spacingValue, int indent) {if (pRun == null) {return;}CTRPr pRpr = getRunCTRPr(p, pRun);if (colorVal != null) {pRun.setColor(colorVal);}// 设置字体样式// 加粗if (isBlod) {pRun.setBold(isBlod);}// 倾斜if (isItalic) {pRun.setItalic(isItalic);}// 删除线if (isStrike) {pRun.setStrike(isStrike);}// 双删除线if (isDStrike) {CTOnOff dsCtOnOff = pRpr.isSetDstrike() ? pRpr.getDstrike() : pRpr .addNewDstrike();dsCtOnOff.setVal(STOnOff.TRUE);}// 阴影if (isShadow) {CTOnOff shadowCtOnOff = pRpr.isSetShadow() ? pRpr.getShadow(): pRpr.addNewShadow();shadowCtOnOff.setVal(STOnOff.TRUE);}// 隐藏if (isVanish) {CTOnOff vanishCtOnOff = pRpr.isSetVanish() ? pRpr.getVanish(): pRpr.addNewVanish();vanishCtOnOff.setVal(STOnOff.TRUE);}// 阳文if (isEmboss) {CTOnOff embossCtOnOff = pRpr.isSetEmboss() ? pRpr.getEmboss(): pRpr.addNewEmboss();embossCtOnOff.setVal(STOnOff.TRUE);}// 阴文if (isImprint) {CTOnOff isImprintCtOnOff = pRpr.isSetImprint() ? pRpr.getImprint() : pRpr.addNewImprint();isImprintCtOnOff.setVal(STOnOff.TRUE);}// 空心if (isOutline) {CTOnOff isOutlineCtOnOff = pRpr.isSetOutline() ? pRpr.getOutline() : pRpr.addNewOutline();isOutlineCtOnOff.setVal(STOnOff.TRUE);}// 着重号if (isEm) {CTEm em = pRpr.isSetEm() ? pRpr.getEm() : pRpr.addNewEm();em.setVal(emType);}// 设置下划线样式if (isUnderLine) {CTUnderline u = pRpr.isSetU() ? pRpr.getU() : pRpr.addNewU();if (underStyle != null) {u.setVal(underStyle);}if (underLineColor != null) {u.setColor(underLineColor);}}// 设置突出显示文本if (isHightLight) {if (hightStyle != null) {CTHighlight hightLight = pRpr.isSetHighlight() ? pRpr.getHighlight() : pRpr.addNewHighlight();hightLight.setVal(hightStyle);}}if (isShd) {// 设置底纹CTShd shd = pRpr.isSetShd() ? pRpr.getShd() : pRpr.addNewShd();if (shdStyle != null) {shd.setVal(shdStyle);}if (shdColor != null) {shd.setColor(shdColor);}}// 上标下标if (verticalAlign != null) {pRun.setSubscript(verticalAlign);}// 设置文本位置pRun.setTextPosition(position);if (spacingValue > 0) {// 设置字符间距信息CTSignedTwipsMeasure ctSTwipsMeasure = pRpr.isSetSpacing() ? pRpr .getSpacing() : pRpr.addNewSpacing();ctSTwipsMeasure.setVal(new BigInteger(String.valueOf(spacingValue)));}if (indent > 0) {CTTextScale paramCTTextScale = pRpr.isSetW() ? pRpr.getW() : pRpr .addNewW();paramCTTextScale.setVal(indent);}}/*** @Description: 设置段落底纹(对整段文字起作用)*/public void setParagraphShdStyle(XWPFParagraph p, boolean isShd,STShd.Enum shdStyle, String shdColor) {CTPPr pPpr = getParagraphCTPPr(p);CTShd shd = pPpr.isSetShd() ? pPpr.getShd() : pPpr.addNewShd();if (shdStyle != null) {shd.setVal(shdStyle);}if (shdColor != null) {shd.setColor(shdColor);}}/*** @Description: 设置段落间距信息,一行=100 一磅=20*/public void setParagraphSpacingInfo(XWPFParagraph p, boolean isSpace, String before, String after, String beforeLines, String afterLines, boolean isLine, String line, STLineSpacingRule.Enum lineValue) {CTPPr pPPr = getParagraphCTPPr(p);CTSpacing pSpacing = pPPr.getSpacing() != null ? pPPr.getSpacing(): pPPr.addNewSpacing();// 段前磅数if (before != null) {pSpacing.setBefore(new BigInteger(before));}// 段后磅数if (after != null) {pSpacing.setAfter(new BigInteger(after));}// 段前行数if (beforeLines != null) {pSpacing.setBeforeLines(new BigInteger(beforeLines)); }// 段后行数if (afterLines != null) {pSpacing.setAfterLines(new BigInteger(afterLines)); }}// 间距if (line != null) {pSpacing.setLine(new BigInteger(line));}if (lineValue != null) {pSpacing.setLineRule(lineValue);}}}// 设置段落缩进信息 1厘米≈567public void setParagraphIndInfo(XWPFParagraph p, String firstLine,String firstLineChar, String hanging, String hangingChar,String right, String rigthChar, String left, String leftChar) {CTPPr pPPr = getParagraphCTPPr(p);CTInd pInd = pPPr.getInd() != null ? pPPr.getInd() : pPPr.addNewInd();if (firstLine != null) {pInd.setFirstLine(new BigInteger(firstLine));}if (firstLineChar != null) {pInd.setFirstLineChars(new BigInteger(firstLineChar)); }if (hanging != null) {pInd.setHanging(new BigInteger(hanging));}if (hangingChar != null) {pInd.setHangingChars(new BigInteger(hangingChar));}if (left != null) {pInd.setLeft(new BigInteger(left));}if (leftChar != null) {pInd.setLeftChars(new BigInteger(leftChar));}if (right != null) {pInd.setRight(new BigInteger(right));}if (rigthChar != null) {pInd.setRightChars(new BigInteger(rigthChar));}}// 设置段落边框public void setParagraphBorders(XWPFParagraph p, Borders lborder, Borders tBorders, Borders rBorders, Borders bBorders,Borders btborders) {if (lborder != null) {p.setBorderLeft(lborder);}if (tBorders != null) {p.setBorderTop(tBorders);}if (rBorders != null) {p.setBorderRight(rBorders);}if (bBorders != null) {p.setBorderBottom(bBorders);}if (btborders != null) {p.setBorderBetween(btborders);}}/*** @Description: 设置段落对齐*/public void setParagraphAlignInfo(XWPFParagraph p,ParagraphAlignment pAlign, TextAlignment valign) { if (pAlign != null) {p.setAlignment(pAlign);}if (valign != null) {p.setVerticalAlignment(valign);}}/*------------------------------------Word 表格相关--------------------------------------------------- *//*** @Description:删除指定位置的表格,被删除表格后的索引位置--*/public void deleteTableByIndex(XWPFDocument xdoc, int pos) {Iterator<IBodyElement> bodyElement = xdoc.getBodyElementsIterator();int eIndex = 0, tableIndex = -1;while (bodyElement.hasNext()) {IBodyElement element = bodyElement.next();BodyElementType elementType = element.getElementType();if (elementType == BodyElementType.TABLE) {tableIndex++;if (tableIndex == pos) {break;}}eIndex++;}xdoc.removeBodyElement(eIndex);。