精华内容
下载资源
问答
  • 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据并且保存到数据库中这些类似的操作,由于业务上的需要需要利用POI去读取word中的图片,并且去把图片去保存为一个file文件。...

    我们都知道要想利用java对office操作最常用的技术就应该是POI了,在这里本人就不多说究竟POI是什么和怎么用了。先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据并且保存到数据库中这些类似的操作,由于业务上的需要需要利用POI去读取word中的图片,并且去把图片去保存为一个file文件。查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本(.doc或者是.docx结尾)对于文件中所含图片的操作方式,希望能对大家有所帮助。


    闲话不多说,请看代码:

    首先先是对于是.docx文件结尾的word文档中图片的操作:
    package poi;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.List;
    
    import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFPictureData;
    
    public class GetPics {
    	public static void main(String[] args) {
    		String path ="F:\\xx.docx";
            File file = new File(path);
            try {
                FileInputStream fis = new FileInputStream(file);
                XWPFDocument document = new XWPFDocument(fis);
                XWPFWordExtractor xwpfWordExtractor = new XWPFWordExtractor(document);
                String text = xwpfWordExtractor.getText();
                System.out.println(text);
                List<XWPFPictureData> picList = document.getAllPictures();
                for (XWPFPictureData pic : picList) {
                    System.out.println(pic.getPictureType() + file.separator + pic.suggestFileExtension()
                            +file.separator+pic.getFileName());
                    byte[] bytev = pic.getData();
                    FileOutputStream fos = new FileOutputStream("d:\\"+pic.getFileName()); 
                    fos.write(bytev);
                }
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    	}
    }
    

    指定word文件中的图片:


    控制台输出的信息:


    指定磁盘位置生成的图片文件:



    然后就是对于是.doc结尾的word文档中图片的操作:

    不同于高版本的操作类,这里用的就是专门对于03版本的word操作类:

    package com.zjcx.read;
    
    import java.io.*;
    import java.util.*;
    
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.model.PicturesTable;
    import org.apache.poi.hwpf.usermodel.CharacterRun;
    import org.apache.poi.hwpf.usermodel.Picture;
    import org.apache.poi.hwpf.usermodel.Range;
    
    public class ReadImg { 
    
    public static void main(String[] args) throws Exception {	
    	new ReadImg().readPicture("F://test//test.doc");
    }
    
    	private void readPicture(String path)throws Exception{
    		 FileInputStream in=new FileInputStream(new File(path)); 
    		 HWPFDocument doc=new HWPFDocument(in); 
    		 int length=doc.characterLength();
    		 PicturesTable pTable=doc.getPicturesTable();
    		// int TitleLength=doc.getSummaryInformation().getTitle().length();
    
    		 //  System.out.println(TitleLength);
    		  // System.out.println(length);
    		   for (int i=0;i<length;i++){
    			   Range range=new Range(i, i+1,doc);
    			   
    			   CharacterRun cr=range.getCharacterRun(0);
    			   if(pTable.hasPicture(cr)){
    				   	Picture pic=pTable.extractPicture(cr, false);
    					String afileName=pic.suggestFullFileName();
    					OutputStream out=new FileOutputStream(new File("F:\\test\\"+UUID.randomUUID()+afileName));
    					pic.writeImageContent(out);
    		
    			  }
    		   }
    
    	}
    
    }
    
    以下的生成结果同用高版本读取word中图片并且生成新图片的那几张效果图。


    说完了对于不同版本的word文档中图片的操作,本人还遇到了创建word的业务。不同于我们利用流去生成一个txt文件,也不同与我们直接new一个File,然后在调用file的createNew这个方法。让我们来看看究竟利用POI代码和其他的代码来创建或者说是新建(其实只是最近程度的模仿生成一个word,但是肯定跟我们手动新建有所区别,具体有什么区别本人还是没有参透,如果有大牛看了如下的代码知道的话,希望能指点迷津~)一个word,闲话不多说,请看代码:

    首先是第一种,创建.doc结尾的word文件。(在这里本人不在贴生成文件的效果图,大家试试即可)

    package poi;
    
    import java.io.ByteArrayInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import org.apache.poi.poifs.filesystem.DirectoryEntry;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    
    public class GenWord03 {
    	public static void main(String[] args) throws IOException {
    		String path = "F:/";
    		String filename = "/123321.doc";
    		 String content="";
    		byte[] b = content.getBytes("UTF-8");
    		ByteArrayInputStream bais = new ByteArrayInputStream(b);
    		POIFSFileSystem poifs = new POIFSFileSystem();
    		DirectoryEntry dirEntry = poifs.getRoot();
    		dirEntry.createDocument("WordDocument", bais);
    		FileOutputStream out = new FileOutputStream(path + filename);
    		poifs.writeFilesystem(out);
    		out.flush();
    		out.close();
    		bais.close();
    	}
    }
    

    再者就是创建.docx结尾的word文件。

    package poi;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    import org.apache.poi.xwpf.usermodel.XWPFRun;
    
    public class GenNewWord {
    	 
    	public static void main(String[] args) throws IOException {
    		String content = "要展示的内容";
    		
    		String path = "F:/";
    		String filename = "/xxx.doc";
    		XWPFDocument doc = new XWPFDocument();
    		XWPFParagraph para= doc.createParagraph();
    		XWPFRun run = para.createRun();
    		run.setText(content);
    		
    		File file = new File(path + filename);
    		FileOutputStream out = new FileOutputStream(file);
    		doc.write(out);
    		out.close();
    		
    	}
    
    }
    

    注:也许比较熟练POI操作的老手们来说,或许知道Apache公司提供的操作类中对于03版本的word文档操作是有限的,更多只是对于一个现有(已经存在)的文档操作,所以我们在各大网友的博客或者帖子中都会发现对于旧版本的word文档操作的代码开始处就是读取一个现有word的操作。而对于07版本(也就是.docx结尾的word文档)来说,则更加完善,开发者真正意义上可以完全利用POI去操作一个word文件的全部生命周期(也就是从无到有的过程)。这只是本人简略总结,有不足之处希望看到这篇博客的网友多多吐槽,多多交流。



    展开全文
  • word文档密码破解

    万次阅读 热门讨论 2018-12-20 16:39:12
    有的时候,为了保护word文档不被编辑以及被其他人乱修改,我们会对word文档进行一个密码设置,以此来保护word文档。可是当我们忘记设置的密码怎么办? 我们可以尝试下面的方法: 法一:借助破解工具:Word ...

    有的时候,为了保护word文档不被编辑以及被其他人乱修改,我们会对word文档进行一个密码设置,以此来保护word文档。可是当我们忘记设置的密码怎么办?

    我们可以尝试下面的方法:

    法一:借助破解工具:Word Password Recovery Master 

    步骤:

    £¨1 下载Word Password Recovery Master软件,下载地址为:http://www.pcsoft.com.cn/soft/155849.html选择本地下载即可,按流程简单几步即可完成操作下载。

    £¨2 打开软件,选择要破解的加密文档:

     

    £¨3 点击crack(破解),然后ok,就会开始破解密码了

    £¨4 成功后,都会变为none,且在加密文档的同一个文件夹下,本例是桌面,可以看到一个“同名称的(DEMO)”文档,代表这是经过清除密码的文档。

    £¨5 双击这份DEMO文档,没有提示让输入密码的提示框了,顺利进入了word编辑页面。

    注意事项:(1)破解过程需有网络连接;(2)此方法虽可破解密码,但无法查看当初设置的密码;(3)此方法破解强度高,组合密码,10位以上密码等都可被破解;(4)网上方法很多,但多数不可用,后面会继续探索新方法。

     

     

    展开全文
  • 说到编辑文本,大家第一个想到的肯定就是TXT文本文档以及Word文档了吧。其中TXT文本文档以纯输入文本而文明,而Word则还支持各种文字格式、排版、以及插入图片等更多高阶的操作而深受学生、职场人的欢迎。 不过...

    说到编辑文本,大家第一个想到的肯定就是TXT文本文档以及Word文档了吧。其中TXT文本文档以纯输入文本而文明,而Word则还支持各种文字格式、排版、以及插入图片等更多高阶的操作而深受学生、职场人的欢迎。

    不过常在河边走,哪有哪有不湿鞋,相信你肯定遇到过Word文档没有保存就关闭,或者码到一般突然断电、关机、或者是因为其他原因造成的整个Word文档丢失的问题。问题发生了我们就不纠结它是如何如何导致的了,我们要做的是第一时间找出解决问题的方法,将损失降到最小。

    1、自动恢复

    有一个词叫做未雨绸缪,所以我们要随时做好电脑断电、卡死各种能导致你Word文档数据丢失的准备。所以最直接的方法就是方式就是打开Word文档的自动保存功能,有一些盗版的office办公软件可能没有默认没有打开这个功能,或者某些正版版本的office没有默认打开这个功能,只需要点击office按钮,点击Word选项,就能调出这个功能了。

    点击保存,将保存自动恢复信息时间调整到一分钟,点击确定即可。这样即使发生了数据丢失的问题,丢失的也仅仅是最后一分钟内你所编辑的数据。

    之后在设定一下自动恢复文件的生成路径,没有设定这个也没有关系,在你重新打开Word组件之后,软件会提示你上次操作有自动保存的文件,是否需要查看。

    点击浏览之后会自动跳转到文件所在的文件夹,这时候你会郁闷没有一个DOC或者一个DOCX文档,因为是一个突发性保存的文件,所以系统选择将其保存为临时文件,方便更快速的保存以及打开。右键点击asd文件,选择打开方式,用Word文档打开即可。

    3、手动恢复

    如果你是没有开启自动保存,或者是误删了整个Word文档的,那么可以用手动恢复的方式进行操作。

    1、安装一个数据恢复工具,不赶时间的话当然就是选择深度扫描了。

    2、一般都是新建文档在桌面编辑,如果你是在U盘里的文件,选择U盘的所在磁盘,进行扫描即可。

    3、对于近期丢失的数据可以很容易就恢复回来,因为删除的文件并不会彻底从你的磁盘当中删除。而是被隐藏起来保存在磁盘的可用空间当中。

    4、之后选择相应的恢复路径方便找到文件即完成了所有的操作。

    建议还是花一点点时间开启Word文档的自动保存,同理对于PPT以及Excel也应该做好此项设定。

    展开全文
  • word文档转html文档

    千次阅读 2018-05-27 16:07:58
    docx是office word 2007以及以后版本文档的扩展名;doc是office word 2003文档保存的扩展名。对于这两种格式的word转换成html需要使用不同的方法。对于docx格式的文档使用xdocreport进行转换。依赖如下:&lt;...

    一般word文件后缀有doc、docx两种。docx是office word 2007以及以后版本文档的扩展名;doc是office word 2003文档保存的扩展名。对于这两种格式的word转换成html需要使用不同的方法。

    对于docx格式的文档使用xdocreport进行转换。依赖如下:

    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>fr.opensagres.xdocreport.document</artifactId>
        <version>1.0.5</version>
    </dependency>
    <dependency>  
        <groupId>fr.opensagres.xdocreport</groupId>  
        <artifactId>org.apache.poi.xwpf.converter.xhtml</artifactId>  
        <version>1.0.5</version>  
    </dependency>

    对于docx格式的文档使用poi进行转换。依赖如下:

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.12</version>
    </dependency>

    示例

      代码示例如下:

    	/**
    	 * 将Word2007+转成Html
    	 * 
    	 * @throws Exception
    	 */
    	@Test
    	public void word2007ToHtml() throws Exception {
    		String filePath = "E:/学习、练习数据文件夹/test/";
    		String fileName = "SpringIOC解析.docx";
    		String htmlName = "SpringIOC解析.html";
    		final String file = filePath + fileName;
    		File f = new File(file);
    		if (!f.exists()) {
    			System.out.println("Sorry File does not Exists!");
    		} else {
    			/* 判断是否为docx文件 */
    			if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) {
    				// 1)加载word文档生成XWPFDocument对象
    				FileInputStream in = new FileInputStream(f);
    				XWPFDocument document = new XWPFDocument(in);
    				// 2)解析XHTML配置(这里设置IURIResolver来设置图片存放的目录)
    				File imageFolderFile = new File(filePath);
    				XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(imageFolderFile));
    				options.setExtractor(new FileImageExtractor(imageFolderFile));
    				options.setIgnoreStylesIfUnused(false);
    				options.setFragment(true);
    				// 3)将XWPFDocument转换成XHTML
    				FileOutputStream out = new FileOutputStream(new File(filePath + htmlName));
    				XHTMLConverter.getInstance().convert(document, out, options);
    				//也可以使用字符数组流获取解析的内容
    				//ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    				//XHTMLConverter.getInstance().convert(document, baos, options);  
    				//String content = baos.toString();
    				//System.out.println(content);
    				//baos.close();
    			} else {
    				System.out.println("Enter only as MS Office 2007+ files");
    			}
    		}
    	}
    
    	/**
    	 * word2003-2007转换成html
    	 * @throws Exception
    	 */
    	@Test
    	public void wordToHtml() throws Exception {
    		String filePath = "E:/学习、练习数据文件夹/test/";
    		String fileName = "SpringIOC解析2003.doc";
    		String htmlName = "SpringIOC解析2003.html";
    		final String imagePath = filePath + "/image/";
    		final String file = filePath + fileName;
    		InputStream input = new FileInputStream(new File(file));
    		HWPFDocument wordDocument = new HWPFDocument(input);
    		WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
    				DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
    		//设置图片存储位置
    		wordToHtmlConverter.setPicturesManager(new PicturesManager() {
    			
    			public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches,
    					float heightInches) {
    				File imgPath=new File(imagePath);
    				if (!imgPath.exists()) {//目录不存在则创建目录
    					imgPath.mkdirs();
    				}
    				File file = new File(imagePath+suggestedName);
    				try {
    					FileOutputStream os = new FileOutputStream(file);
    					os.write(content);
    					os.close();
    				} catch (FileNotFoundException e) {
    					e.printStackTrace();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    				return imagePath+suggestedName;
    			}
    		});
    		
    		//解析word文档
    		wordToHtmlConverter.processDocument(wordDocument);
    		Document htmlDocument = wordToHtmlConverter.getDocument();
    		File htmlFile = new File(filePath+htmlName);
    		FileOutputStream outStream = new FileOutputStream(htmlFile);
    	    //也可以使用字符数组流获取解析的内容
    		//ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    		//OutputStream outStream = new BufferedOutputStream(baos);
    		DOMSource domSource = new DOMSource(htmlDocument);
    		StreamResult streamResult = new StreamResult(outStream);
    		TransformerFactory factory = TransformerFactory.newInstance();
    		Transformer serializer = factory.newTransformer();
    		serializer.setOutputProperty(OutputKeys.ENCODING,"utf-8");
    		serializer.setOutputProperty(OutputKeys.INDENT, "yes");
    		serializer.setOutputProperty(OutputKeys.METHOD, "html");
    		serializer.transform(domSource, streamResult);
    		//也可以使用字符数组流获取解析的内容
    		//String content = baos.toString();
    		//System.out.println(content);
    		//baos.close();
    		outStream.close();
    	}
    Demo地址:https://github.com/gitdlf/Word-To-Html-Demo
    展开全文
  • Word文档转换为图片Pdf,Word文档扫描成Pdf Word转换为图片Pdf1、 Word转换为Pdf,程序很多,但转换后的Pdf,还可以复制,虽可以加密禁止复制,但市场上太多的Pdf,还可以把Pdf转换Word等其他格式,很容易被别人利用...
  • Java生成并导出word文档,操作word文档

    千次阅读 2019-02-25 15:02:17
    word文档作为办公的重要文件格式,有时候我们会需要我们的java程序直接将计算得到的结果生成word文档,方便取用,这里我们使用第三方包iText来实现 1、首先在Eclipse上新建一个Java工程,我取名为Java2Word,本经验只...
  • Laravel生成Word文档 - phpword

    千次阅读 2018-01-27 21:54:15
    在项目实际开发或学习中,会遇到把数据导出生成word文档的需求。这里就用优雅、流行的laravel框架,来简单的教大家实现。 phpword,它可以很方便的实现word文档的生成,同时可以在word中添加表格、目录、图片、...
  • 要将word文档的每页单独保存为一个word文档,首先需要能够逐页遍历word文档。 逐页遍历word文档可以使用word的定位功能。 代码如下: Sub SplitToOnePage() Const wdNumberOfPagesInDocument = 4 Const ...
  • XML导出word文档

    千次阅读 2018-01-25 10:58:12
    最近做项目,需要导出word文档的报表,网上查询了一些资料,感觉用xml做这个相对比较简单,Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker...
  • word文档对于我们生活当中,工作当中运用得到都会使得方便快捷。会使用一些基本操作后对于我们工作效率也会有所提升。有时候我们在编辑word文档的时候需要利用一些图形来完成操作,那么应该如何画图呢,下面就由小编...
  • PDM转换成Word文档或者XML文档

    千次阅读 2014-02-25 16:45:30
    1、打开数据库设计文档pdm,选择模板。 2、选择模板 3、选择好模板后,返回pdm...5、确定后即可保存为word文档 小注: 保存为word与xml文件的区别在选择模板与单击Generate Report后均应选择与xml相关的选项,比如:
  • php导出word文档样式以及word文档分页

    千次阅读 2015-06-07 08:24:50
    在导出word的时候,导出来的文档 ,并不是和...边框线:一般word文档的格式,一个框里包含一个标题,然后这个标题下紧凑的跟着一个内容框,或者是两个到三个内容框,你会说很简单啊,第一个框定个宽度,跟着这个宽度
  • html导出 word文档教程

    万次阅读 多人点赞 2017-10-19 13:24:47
    最近搞项目 需要用到导出word 文档,由于呢 他要显示word格式,我就 用word文档生成模板,现在 分享给大家。 这是我在网上找的 demo,按照 功能 不错大家可以看看 1、加入两个外部js FileSaver.js /* ...
  • 新建 Microsoft Office Word 文档

    万次阅读 2021-02-23 21:46:10
    CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office Word 文档.doc"的文件,再新建一个,则名为"新建 Microsoft Office Word 文档(2).doc",再新建,便是"新建 Microsoft Office Word 文档(3)....
  • 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用...这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个Word文档,废话不多说,下面开始。第一部分:复制部分内容:
  • 使用PHPWord生成word文档

    万次阅读 2018-10-09 13:06:46
    phpoffice的github:... 安装 我们使用Composer来安装PHPWord。 composer require phpoffice/phpword ...安装好phpword后,新建一个php文档,引入autoload.php。 require 'vendor/autoload.php'; 实例...
  • 解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题
  • 用FreeMarker生成Word文档

    千次阅读 2016-11-22 10:52:47
    顾名思义, Word文档, document 有文档的意思, archive 也有文档的意思。 `.doc`, `.docx`, `.xls`, `.xlsx` 等文件全部都是ZIP格式的,将文件重命名为 `xxx.zip` 之后,就可以看到压缩文件的结构了。 本文简要介绍...
  • 在线编辑word文档

    千次阅读 2018-11-12 11:46:57
    在线编辑word文档
  • java生成word文档

    万次阅读 2019-05-15 10:25:41
    最近工作需要从数据库查询数据,代码生成word文档,便在网上查询了一下办法。之前类似的工作也曾经做过,当时是在word模板中设置标记,在代码中填充标记。当前网络上简便的方法也是类似,word文档不是凭空生成的,...
  • 刚刚遇到了一个扎心的问题,捣腾了一会儿终于搞定了,相信你肯定也遇到过这样的一种情况,辛辛苦苦编辑好的Word文档材料,遇上电脑突然间崩溃关机了,文档还没来得及保存,哭的心都有了,但哭没用啦 O(∩_∩)O哈哈~...
  • SpringBoot读取Word文档

    千次阅读 2018-02-11 11:23:38
    SpringMVC或SpringBoot上传解析Word文档,我想直接用MultipartFile做解析。因为之前导入Excel表格用的就是3.14版本,所以没有改。还有有可能不是这个依赖,可根据下一段import自行查找。。docx文件可行,doc文件会...
  • Java POI 生成Word文档

    万次阅读 多人点赞 2017-01-09 15:31:58
    在开发中有时候我们需要导出MS word文档。最近因为需要做一个生成word文件的功能。就将这块拿出来和大家分享。  生成word文件和我们写word文档是相同的概念,只不过在这里我们换成了用代码来操作。下面的例子中...
  • JAVA 下载Word文档

    千次阅读 2018-06-03 15:24:00
    最近在做java中页面下载word文档,给大家分享一下。我的环境是MyEclipse10 , JDK1.6 ,Tomcat 6,我这里使用的是FreeMarker。FreeMarker是一个引擎模板。点击了解FreeMarker。好了,废话不多说直接上代码一。首先我们...
  • java导出word文档

    千次阅读 2015-08-26 22:13:05
    java使用模板导出word文档
  • 就是提交上word文档,将word文档转为可以直接使用的xml文档,不是直接修改后缀名的
  • java逐行读取word文档

    千次阅读 2019-05-31 14:24:05
    java逐行读取word文档 最近需要一个读取word文档写入数据库的操作,在网上找了很多大神的代码,不是很懂,所以我根据大神的代码自己写了一个,希望对大家有所帮助 BufferedReader bufferedReader = null; File ...
  • Word文档去除烦人的防复制宏保防功能(word文档宏保护破解技巧)
  • Freemarker生成word文档

    千次阅读 2017-04-19 17:47:24
    Freemarker生成word文档,包含单条数据,多条数据,图片
  • 关于用java编写生成word文档,动态添加数据到word文档的一些心得,经过翻阅了无数的有用的和无用的资料以后,总算找到了一种靠谱的方法1.概述经过反反复复的查阅资料,总算找到了一个靠谱的生成word的方案,这里分享...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,394
精华内容 122,957
关键字:

word文档版本