`
itace
  • 浏览: 182877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

POI获取WORD标题

阅读更多
public class WordUtil {

	//2003
	public static List<String> getWordTitles2003(String path) throws IOException{
		File file = new File(path);
		String filename = file.getName();
		filename = filename.substring(0, filename.lastIndexOf("."));
		InputStream is = new FileInputStream(path);
		HWPFDocument doc = new HWPFDocument(is); 
		Range r = doc.getRange();
		
		List<String> list = new ArrayList<String>();
		for (int i = 0; i < r.numParagraphs(); i++) {
	        Paragraph p = r.getParagraph(i);
	        // check if style index is greater than total number of styles
	        int numStyles =doc.getStyleSheet().numStyles();
	        int styleIndex = p.getStyleIndex();
	        if (numStyles > styleIndex) {
	            StyleSheet style_sheet = doc.getStyleSheet();
	            StyleDescription style = style_sheet.getStyleDescription(styleIndex);
	            String styleName = style.getName();
	            if (styleName!=null&&styleName.contains("标题")) {
	            	// write style name and associated text
		            // System.out.println(styleName + " -> " + p.text());
//	            	System.out.println(p.text());
	            	String text = p.text();
	            	list.add(text);
				}
	        }
		}
		
		//TODO 图表跟图片不一样,需另外处理
		//得到word数据流  
        byte [] dataStream = doc.getDataStream();  
        //用于在一段范围内获得段落数  
        int numCharacterRuns = r.numCharacterRuns();  
//        System.out.println("CharacterRuns 数:"+numCharacterRuns);  
        //负责图像提取  和    确定一些文件某块是否包含嵌入的图像。  
        PicturesTable table = new PicturesTable(doc, dataStream, null, null, null);  
        
        //文章图片编号
        int i = 1;
        for(int j=0 ; j<numCharacterRuns ; j++){  
            //这个类表示一个文本运行,有着共同的属性。  
            CharacterRun run = r.getCharacterRun(j);  
            //是否存在图片  
            boolean bool = table.hasPicture(run);  
            if(bool){
                //返回图片对象绑定到指定的CharacterRun  
                Picture pic = table.extractPicture(run, true);  
                //图片的内容字节写入到指定的输出流。  
                pic.writeImageContent(new FileOutputStream("E:\\temp\\"+filename+"_"+i+".jpg"));  
                i++;
            }  
        }
        return list;
	}
	
	public static List<String> getWordTitles2007(String path) throws IOException{

		InputStream is = new FileInputStream(path);
		
		//2007
//		OPCPackage p = POIXMLDocument.openPackage(path);
//		XWPFWordExtractor e = new XWPFWordExtractor(p);
//		POIXMLDocument doc = e.getDocument();
		List<String> list = new ArrayList<String>();
		XWPFDocument doc = new XWPFDocument(is);
		XWPFParagraph[]paras = doc.getParagraphs();
		for (XWPFParagraph graph : paras) {
			String text = graph.getParagraphText();
			String style = graph.getStyle();
			if ("1".equals(style)) {
//				System.out.println(text+"--["+style+"]");
			}else if ("2".equals(style)) {
//				System.out.println(text+"--["+style+"]");
			}else if ("3".equals(style)) {
//				System.out.println(text+"--["+style+"]");
			}else{
				continue;
			}
			list.add(text);
		}
		return list;
		
	}
	public static void main(String[] args) throws IOException {

		String path = "E:/temp/poi_test.doc";
		List<String> list = new ArrayList<String>();
		if (path.endsWith(".doc")) {
			list = getWordTitles2003(path);
		}else if (path.endsWith(".docx")) {
			list = getWordTitles2007(path);
		}
		for (String title : list) {
			System.out.println(title);
		}
	}
}

 

分享到:
评论

相关推荐

    [简单]poi读取word 2007简单文本框值

    标题中的“poi读取word 2007简单文本框值”指的是使用Apache POI库来读取Microsoft Word 2007文档中简单文本框内的文本内容。Apache POI是一个流行的开源Java库,用于处理Microsoft Office格式的文件,如Word(.docx...

    JAVA-POI读取word每一段所在页码(附依赖jar包).zip

    POI无法读取到word每一段所在的页码。我给出了代码和所有的解释,用POI读取word中的页码。也算是小方法了,基本很准确,为什么要加一个基本呢?因为,分页标志符号在第一行为空白行的时候没有分页符!!所以你的文档...

    POI导出Word 页眉 页脚 标题设置

    在本主题中,我们将深入探讨如何使用POI库来导出Word文档,并进行页眉、页脚和标题的设置。这个过程涉及到对Word文档的高级布局控制,对于自动化报告生成或批量创建文档非常有用。 1. **Apache POI简介** Apache ...

    POI输出Word分段问题的解决

    在java中使用POI向word输出文字,并解决文件输出换行符无法写入word的问题。

    POI解析word2007文本及图片(已测试).doc

    Apache POI 解析 Word 2007 文本及图片 Apache POI (Poor Obfuscation Implementation) 是一个 Java 库,用于读取和写入 Microsoft Office 文件,包括 Word、Excel、PowerPoint 等。 Apache POI 提供了对 Word ...

    基于poi导出word以及图片

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)等。在本教程中,我们将重点讨论如何利用Apache POI 3.13版本来导出Word文档,并结合图片操作。 ...

    获取word文件中的标题、序号、批注等工具类

    使用aspose.words,获取word文件中的标题,批注,批注所在标题,标题序号,在书签处插入图片,在指定文字处插入图片等

    POI修改word、excel、pdf、ppt文件属性如作者以及将其转成html

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)、PowerPoint(.ppt, .pptx)等。通过使用POI,开发者可以创建、读取、修改这些文件,并且将...

    Java使用POI导出Word文档

    下面是一个简单的代码示例,展示了如何使用POI创建一个包含标题和内容的Word文档: ```java import org.apache.poi.xwpf.usermodel.*; public class WordExporter { public static void main(String[] args) ...

    java准确读取word页码

    Apache POI提供了HWPF(Horrible Word Processor Format)用于处理老版本的Word(.doc),而XWPF(XML Word Processing Format)用于处理新版本的Word(.docx)。由于描述中没有明确指出是哪种类型的Word文件,我们...

    利用POI将word转换成html实现在线阅读

    对于Word文档,POI提供了HWPF(Horrible Word Processor Format)组件,用于处理旧版的Word 97/2000/2003文件(.doc),而XWPF组件则用于处理较新的OpenXML格式(.docx)。 转换Word到HTML的过程涉及以下几个步骤:...

    poi操作word文档

    ### 使用POI操作Word文档详解 #### 一、概述 Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Word、Excel 和 PowerPoint。对于 Word 文档(.docx),Apache POI 提供了 XWPF 模块来...

    poi转word含包

    标题中的“poi转word含包”指的是使用Apache POI库将数据从Excel(通常使用POI处理)转换为Microsoft Word文档。Apache POI是Java的一个开源项目,它提供了API来读取、创建和修改Microsoft Office格式的文件,包括...

    poi3.8 doc,excel转html

    在IT行业中,处理各种文件格式转换是常见的任务之一。...如果你在使用Apache POI时遇到困难,建议查阅官方文档、示例代码以及开发者社区中的讨论,以便获取更多帮助。记得,持续学习和不断实践是解决这类问题的关键。

    poiWord2003和Word2007包括图片完整转换成html 包括完整Jar包

    这通常涉及创建`&lt;p&gt;`标签表示段落,`&lt;h1&gt;`, `&lt;h2&gt;`等标签表示标题,`&lt;img&gt;`标签插入图片,以及使用CSS来复制原始Word文档的样式。 6. **事例代码**:压缩包中可能包含了一个示例代码,展示了如何使用POI完成上述...

    Java Poi流 根据Word模板插入相应的文本、表格和图片,生成新的Word报告

    Java POI库是Apache软件基金会开发的一个开源项目,专门用于读写Microsoft Office格式的文件,如Word、Excel等。在本场景中,我们主要关注如何使用Java POI处理Word文档,特别是通过模板来生成新的Word报告。这个...

    poi导出word的几种方法

    ### POI导出Word的几种方法 在Java开发过程中,特别是在使用Grails框架时,我们经常需要处理文档的生成和转换任务。其中一种常见的需求就是将数据导出为Word文档。Apache POI库提供了一种非常高效且灵活的方式来...

    JAVA_Poi.rar_Java 解析WORD_POI word_java pio_pressureulb_word解析

    标题中的"Java 解析WORD_POI word_java pio_pressureulb_word解析"指出了主要的技术点:使用Java的Apache POI库解析Word文档。Apache POI提供了一个名为HWPF(Horrible Word Processor Format)的API用于处理旧版的....

    Android上使用POI抽取WordExcel和PPT内容工程源码

    可以获取幻灯片的标题、内容、图片、形状以及动画和过渡效果。 5. **性能优化**:由于Android设备的内存限制,处理大型Office文档时需要注意内存管理。可以采用流式处理或者分块读取的方式,减少内存占用。 6. **...

    JAVA不使用POI,用PageOffice动态导出Word文档[参考].pdf

    然而,传统的Apache POI库虽然强大,但在处理复杂的Word格式和排版时可能会变得较为繁琐。这时,PageOffice提供了一种更高效、更便捷的解决方案,尤其适用于动态创建和编辑Word文档。 PageOffice是一款由 ...

Global site tag (gtag.js) - Google Analytics