精华内容
下载资源
问答
  • 项目通过java接口来下载文件,发现下载office文件时,打开都不正常,比如下载office文件打开会报“word在 XX.docx发现无法读取内容。是否恢复此文档的内容”。但如果通过nginx映射来下载,可以正常打开。 解决...

    问题描述:

    项目通过java接口来下载文件,发现下载office文件时,打开都不正常,比如下载office文件打开会报“word在 XX.docx 发现无法读取的内容。是否恢复此文档的内容”。但如果通过nginx映射来下载,可以正常打开。

    解决方法:

    研究后发现,是因为没有设置Content-Type,其实每种office文件都有对应的Content-Type。可参考:https://www.jianshu.com/p/4b09c260f9b2?from=groupmessage

    修改后的代码如下:

        private final static Map<String, String> CONTENT_TYPE_MAP = new HashMap<>();
    
        static {
            CONTENT_TYPE_MAP.put("doc", "application/msword");
            CONTENT_TYPE_MAP.put("dot", "application/msword");
            CONTENT_TYPE_MAP.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
            CONTENT_TYPE_MAP.put("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
            CONTENT_TYPE_MAP.put("docm", "application/vnd.ms-word.document.macroEnabled.12");
            CONTENT_TYPE_MAP.put("dotm", "application/vnd.ms-word.template.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xls", "application/vnd.ms-excel");
            CONTENT_TYPE_MAP.put("xlt", "application/vnd.ms-excel");
            CONTENT_TYPE_MAP.put("xla", "application/vnd.ms-excel");
            CONTENT_TYPE_MAP.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            CONTENT_TYPE_MAP.put("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
            CONTENT_TYPE_MAP.put("xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xltm", "application/vnd.ms-excel.template.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
            CONTENT_TYPE_MAP.put("ppt", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("pot", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("pps", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("ppa", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
            CONTENT_TYPE_MAP.put("potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
            CONTENT_TYPE_MAP.put("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
            CONTENT_TYPE_MAP.put("ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
            CONTENT_TYPE_MAP.put("pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
            CONTENT_TYPE_MAP.put("potm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
            CONTENT_TYPE_MAP.put("ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
        }
    
    
        
        @ApiOperation(value = "文件下载接口", httpMethod = "GET", notes = "文件下载接口")
        @RequestMapping("/downloadFiles/{md5}.{format}")
        @ResponseBody
        public AjaxResult downloadFiles(HttpServletResponse response,
            @PathVariable String md5, @PathVariable String format){
            File file = new File(this.getFilePath()+md5+".data");
            if(!file.exists()) {
                return getResult(1, "文件不存在");
            }
            try(
                FileInputStream fileInput = new FileInputStream(file);
                BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);
            ) {
                response.setHeader("Accept-Ranges", "bytes");
                response.setHeader("Content-Length", file.length()+"");
                response.setHeader("Content-Type", CONTENT_TYPE_MAP.get(format));
                response.setDateHeader("Last-Modified", file.lastModified());
                response.setCharacterEncoding(null); // 设置为null,否则Content-Type会带上charset=UTF-8
                byte[] buffer = new byte[1024];
                OutputStream os = response.getOutputStream();
                int len = 0;
                while ((len = bufferedInput.read(buffer)) > 0) {
                    os.write(buffer, 0, len);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return getResult(0, null);
        }

     

    展开全文
  • 求大佬什么什么解决办法 ,服务器下载word文件后使用poi对文件无法读取,必须把word文件另存为以后才能操作,但是java无法word文件进行这种操作把
  • 读取word内容

    2019-05-28 09:28:08
    作者:李嘉乐 本次任务完成时间:2019年5月19日~2019年5月28日 开发工具与关键技术: VS2015、... 根据word里的分节符作为条件,读取每节内容。 再根据每节内容的第一个回车符,得到第一个回车符之前的内容,然后放...

    作者:李嘉乐
    本次任务完成时间:2019年5月19日~2019年5月28日
    开发工具与关键技术: VS2015、C#

    首先需要引用一个命名空间: using Word = Microsoft.Office.Interop.Word;
    然后声明和实例化 office程序,和word文档。 根据word里的分节符作为条件,读取每节内容。 再根据每节内容的第一个回车符,得到第一个回车符之前的内容,然后放进titleText 集合里,代码如下:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • VC 读取Word文档内容

    2018-06-27 21:26:36
    通过VC或者mfc打开word文档,并读取文档中的内容。。。。。
  • POI读取word文档的文字内容和图片内容

    千次下载 热门讨论 2014-09-04 13:55:55
    POI读取word文档的文字内容和图片内容
  • c#用aspose.word读取word文件内容,并显示图片
  • java 利用POI读取Word文件中的内容

    热门讨论 2010-06-21 08:54:08
    java 利用POI读取Word文件中的内容 java 利用POI读取Word文件中的内容
  • Java 读取Word文档中的文本内容

    万次阅读 2019-04-25 16:53:26
    Free Spire.Doc for Java提供了两种方法来读取Word文档中的内容,一种是直接获取文档中的所有文本内容,另一种是遍历文档的每个段落,然后获取段落中的文本,下面将逐一介绍这两种方法。 Word文档如下: 导入jar...

    这篇文章将介绍如何使用Free Spire.Doc for Java组件在Java应用程序中读取Word文档的文本内容。Free Spire.Doc for Java提供了两种方法来读取Word文档中的内容,一种是直接获取文档中的所有文本内容,另一种是遍历文档的每个段落,然后获取段落中的文本,下面将逐一介绍这两种方法。

    Word文档如下:

    导入jar文件

    在开始前,我们需要导入jar文件。下载Free Spire.Doc for Java并解压缩,然后从lib文件夹下,导入Spire.Doc.jar包到你的Java应用程序中。

    (对于maven工程,可以在pom.xml文件中添加对Free Spire.Doc for Java的依赖,参考这篇文章:如何通过Maven仓库安装Spire Java系列组件)

    示例代码

    方法一 直接获取所有文本

    Document类的getText()方法,支持直接获取整个Word文档的所有文本,两行代码就能搞定。

    import com.spire.doc.*;
    
    import java.io.IOException;
    
    public class TextReader {
        public static void main(String[] args) throws IOException {
            //加载Word文档
            Document doc = new Document("Input.docx");
    
            //获取文本
            System.out.println(doc.getText());
        }
    }

    方法二 遍历段落获取文本

    这种方式方法比方法一更加灵活,除了可以获取指定段落的文本外,还可以获取段落的其他属性比如字体、字体大小、对齐方式等。

    import com.spire.doc.*;
    import com.spire.doc.documents.Paragraph;
    
    import java.io.IOException;
    
    public class ParagraphReader {
        public static void main(String[] args) throws IOException {
            //加载Word文档 
            Document doc = new Document("Input.docx");
    
            //遍历文档中的节和段落,获取每个段落的文本         
            for(int i = 0; i < doc.getSections().getCount(); i++) {
                Section section = doc.getSections().get(i);
                for (int j = 0; j < section.getParagraphs().getCount(); j++) {
                    Paragraph paragraph = section.getParagraphs().get(j);
                    System.out.println(paragraph.getText());
                }
            }
        }
    }
    读取结果(内容太长,没有截全):

     

    展开全文
  • java读取word内容

    千次阅读 2014-07-07 10:15:01
    package word; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.POIXMLDocument; import org.apache
    package word;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;

    import java.io.IOException;


    import org.apache.poi.POIXMLDocument;
    import org.apache.poi.POIXMLTextExtractor;
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.openxml4j.opc.OPCPackage;
    import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;

    public class JavaWord {


    /**
    * @Title: main
    * @Description:
    * @param:
    * @return void 
    * @user: wangzg
    * @Date:2014-7-3
    * @throws
    */
    public static void main(String[] args) {

    readWord2003("doc\\wzg.doc");

    //readWord2007("doc\\wzg1.docx");
    }



    /**

    * @Title: readWord2003
    * @Description:
    * @param:
    * @return String 
    * @user: wangzg
    * @Date:2014-7-4
    * @throws
    */
    public static String readWord2003(String filePath) {     
            FileInputStream fis;
            HWPFDocument doc;
            String text = null;
    try {
    File f = new File(filePath);
    fis = new FileInputStream(f);
    doc = new HWPFDocument(fis);
    Range rang = doc.getRange();     
    text = rang.text();  


           System.out.println(text);
           
           fis.close();     
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }        
            return text;     
        } 

    /**

    * @Title: readWord2007
    * @Description:
    * @param:
    * @return String 
    * @user: wangzg
    * @Date:2014-7-4
    * @throws
    */
    public static String readWord2007(String filePath){

    String text = null;
    try {
               OPCPackage oPCPackage = POIXMLDocument.openPackage(filePath);
               XWPFDocument xwpf = new XWPFDocument(oPCPackage);
               POIXMLTextExtractor ex = new XWPFWordExtractor(xwpf);
               text = ex.getText();
               System.out.println(text);
               oPCPackage.close();
           } catch (FileNotFoundException e) {
               e.printStackTrace();  
           } catch (IOException e) {  
               e.printStackTrace(); 
           } 
    return text;
    }

    }


    详情:请查看poi官网——http://poi.apache.org/


    展开全文
  • 使用POI读取word文档内容

    万次阅读 2017-05-14 22:59:33
    1.1 通过WordExtractor读文件(在WordExtractor内部进行信息读取时还是通过HWPFDocument来获取的。) 1.2 通过HWPFDocument读文件 Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们...
  • C#读取Word指定页的内容

    千次阅读 2018-07-24 10:30:40
    想修改指定页里的内容,一直对Word中指定页的range获取找不到好方法,这篇指明方向啊 /// &lt;summary&gt; /// Word按页读取内容 /// &lt;/summary&gt; /// &lt;param name="page&...
  • 启动 public static void main(String[] args) throws ClientProtocolException, URISyntaxException, IOException { ... 导入依赖 org.apache.poi poi 3.14 运行 本地生成word文件 内容为html页面 ok 持续更新
  • 如图所示,假如我要读取word文件内容,业务概述存一行条数据,业务类型存一条数据,办理时限存一条数据,以此类推。那我读取word文件的时候改如何区分他们分别存入呢,不要问我为什么,因为上万个这样的文档,手动...
  • vb分页读取word内容

    千次阅读 2017-10-11 16:02:08
    最近在研究word插件开发 ,在读取word内容碰到棘手的地方一一记录下来,下面是分页读取word内容 Dim document As Document = Globals.ThisAddIn.Application.ActiveDocument  Dim application As Microsoft....
  • Java word 内容读取

    万次阅读 2018-09-20 20:33:47
    1、添加依赖关系(网上好多帖子没有写依赖,害我找半天)  <groupId>org.apache.poi  <artifactId>poi  <version>4.0.0 ... * 读取doc文件内容 ... * 想要读取的文件对象 ...5、word内容截图
  • C# 读取Word文档中的文本内容

    万次阅读 2018-04-13 18:01:10
    这篇文章将介绍如何使用C#读取Word文档中的全部或指定段落的文本内容
  • using Word = Microsoft.Office.Interop.Word;...获取内容: /// /// 读取 word文档 返回内容 /// ////// public static string GetWordContent(string path) { try { Word.Application app ...
  • 1:antiword实现 php读取word内容    PHP没有自带读取word文件的类,或者是库,这里我们使用antiword(http://www.winfield.demon.nl/)这个包来读取doc文件.  首先介绍一下如何在windows下...
  • java之jacob实现获取word文件的内容

    热门讨论 2011-04-21 17:04:00
    读取word文件的内容,并将内容返回为String类型!
  • .docx的文档损坏打不开,使用各种百度到的修复办法/修复工具/在线修复网页都无法解决。 尝试修改后缀/转换格式/使用wps打开再另存为,失败。 解决方法 经过查找资料,docx/doc文件的本质,是一个装了很多.xml文件...
  • JAVA获取word文档内容

    2020-06-15 16:13:59
    JAVA获取word文档内容 记录:最近在做一些关于OCR识别方面的项目,在这里摘出识别word文档这一部分稍做记录一下,以免以后自己忘记了,也能给需要的朋友一点帮助。 新建一个test.docx的文档,里面随便输入点内容: ...
  • Word读取内容&将word转换成txt

    千次阅读 2016-12-01 21:41:22
    1、将Word转化成txt# -*- coding=utf-8 -*- import sys import os ...word=client.Dispatch('Word.Application') ...#目前来看,window 默认编码都是GBK 要如果要读取中文的文件信息,要decode ''' 代码功能:将wo
  • OpenXml读取word内容注意事项 1、使用OpenXml读取word内容word后缀必须是".docx";如果word后缀是".doc"需要转成".docx"后,才可以读取; 2、需要引入相关dll;"WindowsBase....
  • POI读取word表格内容

    千次阅读 2019-03-13 10:37:14
    poi读取word表格内容(.doc docx) jar依赖 &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi-ooxml&lt;/artifactId&gt; &...
  • C# 读取并显示word文档中的内容

    万次阅读 2019-03-17 18:33:26
    然后就想到了将word文档直接显示到窗体中,并且滚动条可以拉动进行查看。搜集了一些资料之后找到了合适的方法——利用RichTextBox打开一个文字格式和图片的Word文档。 1.添加引用 要加入word文档,就需要在”...
  • word 无法读取文档 文档可能损坏

    千次阅读 2014-01-26 20:33:57
    经常会出现word 不能打开提示“word 无法读取文档 文档可能损坏。”我们大部分情况会以为这个文件真的损坏不能用了,其实不然。这可能是由于我们在保存文档时保存了一些无用的东西,或者格式错误造成的,我今天就...
  • 在写Vue程序过程中遇到错误: ...Module build failed: Unknown word (2:1) 1 | &gt; 2 | var content = require("!!./test.css"); | ^ 3 | 4 | if(typeof content === 'string...
  • Java 读取word文件内容

    2019-10-16 10:33:26
    public static String getDocx(String uri){ //解析docx模板并获取document对象 XWPFDocument document;... //获取XWPFRun对象输出整个文本内容 StringBuffer tempText = new StringBuffer(); try ...
  • 使用POI和JACOB分别读取Word文件文本内容
  • phpword读取内容和样式 生成新的内容

    千次阅读 2019-01-17 08:41:00
    目前 rows cell textrun等样式 顺序不固定 可以设定 <?php require 'vendor/autoload.php'; use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\Style\Font; use Php...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 336,807
精华内容 134,722
关键字:

word有无法读取的内容