GVKun编程网logo

七招挽回受损word文档(七招挽回受损word文档)

25

在这篇文章中,我们将带领您了解七招挽回受损word文档的全貌,包括七招挽回受损word文档的相关情况。同时,我们还将为您介绍有关C#复制一个Word文档的部分或全部内容到另一个Word文档、java使

在这篇文章中,我们将带领您了解七招挽回受损word文档的全貌,包括七招挽回受损word文档的相关情况。同时,我们还将为您介绍有关C# 复制一个Word文档的部分或全部内容到另一个Word文档、java使用POI工具读取word文档并写入生成新的word文档及错误整理、PPT文档怎么转Word文档 PPT转Word文档的操作方法、WinXP系统Word文档损坏打不开 Word文档损坏怎么办的知识,以帮助您更好地理解这个主题。

本文目录一览:

七招挽回受损word文档(七招挽回受损word文档)

七招挽回受损word文档(七招挽回受损word文档)

  Word在Normal.dot模板文件中存储默认信息,如果该模板文件被损坏,可能会引发无法打开Word文档的错误。此时,请创建新的Normal模板,操作步骤如下:  1. 关闭Word;

C# 复制一个Word文档的部分或全部内容到另一个Word文档

C# 复制一个Word文档的部分或全部内容到另一个Word文档

C# 复制一个Word文档的部分或全部内容到另一个Word文档

我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程序那就更好了。

扯远了,回到正题。复制文档内容这个功能太常见啦,在微软Word中实现这个功能很简单,只需要复制和粘贴就行了。这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个word文档,废话不多说,下面开始。

第一部分:复制部分内容:

在我的这个示例中,复制部分内容指的是复制一个word文档的部分段落(包括格式、图片和超链接等)到另一个word文档。

原文档截图:

                 

 

步骤参考:

第一步:新建一个word文档对象doc1并加载需要复制的word文档。

Document doc1 = new Document();
doc1.LoadFromFile("sample.docx");

 

第二步:新建一个word文档对象doc2。

Document doc2 = new Document();

 

第三步:获取被复制文档doc1的第一个section以及第一、二个段落(图片和标题)。

Section s = doc1.Sections[0];
Paragraph p1 = s.Paragraphs[0];
Paragraph p2 = s.Paragraphs[1];

 

第四步:给doc2添加一个section,并将doc1的第一二段的内容和格式等复制到doc2中。

Section s2 = doc2.AddSection();
Paragraph NewPara1 = (Paragraph)p1.Clone();
s2.Paragraphs.Add(NewPara1);
Paragraph NewPara2 = (Paragraph)p2.Clone();
s2.Paragraphs.Add(NewPara2);

 

第五步:保存并重新打开文档。

doc2.SavetoFile("copy.docx",FileFormat.Docx2010);
System.Diagnostics.Process.Start("copy.docx");

 

目标文档效果图:

 

 

第二部分:复制全部内容

复制全部内容指的是将除header和footer以外的其他所有内容复制到另一个文档。

步骤参考:

第一步:新建两个word document对象,并加载待复制的源word文档和目标word文档。

Document sourceDoc = new Document("sample.docx");
Document destinationDoc = new Document("target.docx");

 

第二步:遍历源word文档中的所有section并把它们的内容复制到目标word文档。

foreach (Section sec in sourceDoc.Sections)
{
    foreach (DocumentObject obj in sec.Body.Childobjects)
    {
        destinationDoc.Sections[0].Body.Childobjects.Add(obj.Clone());
    }
}

 

第三步:保存并重启目标word文档。

destinationDoc.SavetoFile("target.docx");
System.Diagnostics.Process.Start("target.docx");

 

在word文档之间单独复制header和footer也可以实现的,如有需要可以在下面留言。

原文档与效果图:

 

效果图:

 

 

结语:

文章写的比较简单,这里我还是使用了E-iceblue公司的免费Word控件,原因是它简单好用,而且我也使用的比较熟练了。接下来我还会研究它的其它功能,并用C#实现Office软件的其它功能。

java使用POI工具读取word文档并写入生成新的word文档及错误整理

java使用POI工具读取word文档并写入生成新的word文档及错误整理

一、读取word文档并写入生成新的word文档:

   1.使用工具包:poi-版本号.jar   poi-scratchpad-版本号-beta5.jar或poi-scratchpad-版本号.jar

   2.代码:   

import java.io.ByteArrayOutputStream;    
import java.io.File;    
import java.io.FileInputStream;    
import java.io.FileNotFoundException;    
import java.io.FileOutputStream;    
import java.io.IOException;    
import java.util.HashMap;    
import java.util.Iterator;    
import java.util.Map;    
    
import org.apache.poi.hwpf.HWPFDocument;    
import org.apache.poi.hwpf.model.FieldsDocumentPart;    
import org.apache.poi.hwpf.usermodel.Field;    
import org.apache.poi.hwpf.usermodel.Fields;    
import org.apache.poi.hwpf.usermodel.Paragraph;    
import org.apache.poi.hwpf.usermodel.Range;    
import org.apache.poi.hwpf.usermodel.Table;    
import org.apache.poi.hwpf.usermodel.TableCell;    
import org.apache.poi.hwpf.usermodel.TableIterator;    
import org.apache.poi.hwpf.usermodel.TableRow;    
    
public class WordTest    
{    
        
    /**  
    * @param args  
    */    
    public static void main(String[] args)    
    {    
        Map<String, String> map = new HashMap<String, String>();    
        map.put("${name}", "张三");    
        map.put("${age}", "20");    
        map.put("${province}", "山西");    
        map.put("${city}", "太原");    
        map.put("${district}", "迎泽区");    
        map.put("${school}", "test");    
        String srcPath = "C:\\Users\\Administrator\\Desktop\\test.doc";    
        readwriteWord(srcPath, map);    
    }    
        
    /**  
    * 实现对word读取和修改操作  
    *   
    * @param filePath  
    *            word模板路径和名称  
    * @param map  
    *            待填充的数据,从数据库读取  
    */    
    public static void readwriteWord(String filePath, Map<String, String> map)    
    {    
        // 读取word模板    
        // String fileDir = new    
        // File(base.getFile(),"http://www.cnblogs.com/http://www.cnblogs.com/../doc/").getCanonicalPath();    
        FileInputStream in = null;    
        try    
        {    
            in = new FileInputStream(new File(filePath));    
        }    
        catch (FileNotFoundException e1)    
        {    
            e1.printStackTrace();    
        }    
        HWPFDocument hdt = null;    
        try    
        {    
            hdt = new HWPFDocument(in);    
        }    
        catch (IOException e1)    
        {    
            e1.printStackTrace();    
        }    
        Fields fields = hdt.getFields();    
        Iterator<Field> it = fields.getFields(FieldsDocumentPart.MAIN)    
                .iterator();    
        while (it.hasNext())    
        {    
            System.out.println(it.next().getType());    
        }    
            
        //读取word文本内容    
        Range range = hdt.getRange();    
        TableIterator tableIt = new TableIterator(range);     
        //迭代文档中的表格    
        int ii = 0;    
        while (tableIt.hasNext()) {      
            Table tb = (Table) tableIt.next();      
            ii++;    
            System.out.println("第"+ii+"个表格数据...................");    
            //迭代行,默认从0开始    
            for (int i = 0; i < tb.numRows(); i++) {      
                TableRow tr = tb.getRow(i);      
                //只读前8行,标题部分    
                if(i >=8) break;    
                //迭代列,默认从0开始    
                for (int j = 0; j < tr.numCells(); j++) {      
                    TableCell td = tr.getCell(j);//取得单元格    
                    //取得单元格的内容    
                    for(int k=0;k<td.numParagraphs();k++){      
                        Paragraph para =td.getParagraph(k);      
                        String s = para.text();      
                        System.out.println(s);    
                    } //end for       
                }   //end for    
            }   //end for    
        } //end while    
        //System.out.println(range.text());    
            
        // 替换文本内容    
        for (Map.Entry<String, String> entry : map.entrySet())    
        {    
            range.replaceText(entry.getKey(), entry.getValue());    
        }    
        ByteArrayOutputStream ostream = new ByteArrayOutputStream();    
        String fileName = "" + System.currentTimeMillis();    
        fileName += ".doc";    
        FileOutputStream out = null;    
        try    
        {    
            out = new FileOutputStream("F:/" + fileName, true);    
        }    
        catch (FileNotFoundException e)    
        {    
            e.printStackTrace();    
        }    
        try    
        {    
            hdt.write(ostream);    
        }    
        catch (IOException e)    
        {    
            e.printStackTrace();    
        }    
        // 输出字节流    
        try    
        {    
            out.write(ostream.toByteArray());    
        }    
        catch (IOException e)    
        {    
            e.printStackTrace();    
        }    
        try    
        {    
            out.close();    
        }    
        catch (IOException e)    
        {    
            e.printStackTrace();    
        }    
        try    
        {    
            ostream.close();    
        }    
        catch (IOException e)    
        {    
            e.printStackTrace();    
        }    
    }    

 

二、问题整理:

    报错内容:org.apache.poi.poifs.filesystem.POIFSFileSystem.getRoot()

Lorg/apache/poi/poifs/filesystem/DirectoryNode错误!

    解决方案:升级poi-版本号.jar包

 

PPT文档怎么转Word文档 PPT转Word文档的操作方法

PPT文档怎么转Word文档 PPT转Word文档的操作方法

PPT怎么转word文档呢?有用户反映PPT资料打印页面很多,怎么才能转为word文档呢?下面给大家介绍PPT文档转为word文档的操作方法。

方法一、利用大纲视图

打开PPT演示文稿,单击“大纲”,在左侧“幻灯片/大纲”任务窗格的“大纲”选项卡里单击一下鼠标,按“Ctrl+A”组合键全选内容,然后使用“Ctrl+C”组合键或右键单击在快捷菜单中选择“复制”命令,将内容粘贴到Word里。这种方法会把原来幻灯片中的行标、各种符号原封不动复制下来。

WinXP系统Word文档损坏打不开 Word文档损坏怎么办

WinXP系统Word文档损坏打不开 Word文档损坏怎么办

在办公的时候word软件时最常使用的,那么Word文档出现了损坏该怎么解决呢?有用户反映Word文档突然损坏打不开怎么办?本文将介绍Word文档损坏的三个解决方法。

解决方法:

一、文档格式法

1、这种方法是将损坏的Word文档转换为另一种格式,然后再将它转换回Word文档格式。这是最简单和最彻底的文档恢复方法。所以如果遇到显示混乱的情况,推荐首先使用这种方法。步骤如下:

2、打开Word文档,依次在菜单栏单击【文件】——【另存为】。

3、在【另存为】窗口单击“保存类型”,在下拉列表中选择【RTF格式(*.rtf)】,单击【保存】按钮。

4、打开转换好的RTF文件,接着同样再单击【文件】菜单中的【另存为】命令。

[page]

5、在【保存类型】列表中选择【Word文档(*.doc)】,单击【保存】按钮。

6、Word文档与RTF的相互转换将保留其格式,如果这种转换没有修复文件,则可以尝试与其他格式相互转换,这将不同程度地保留Word文档的格式。如果使用这些格式均无法解决本问题,可将文档转换为纯文本格式(.txt),再转换回Word格式。由于纯文本的简单性,有可能修复损坏处,但是Word文档的所有格式设置都将丢失。

二、重设格式法

1、Word用文档中的最后一个段落标记关联各种格式设置信息,特别是节与样式的格式设置信息。这样,如果我们将最后一个段落标记之外的所有内容复制到新文档,就有可能将损坏的内容留在原始文档中。步骤如下:

2、打开损坏的Word文档,单击菜单栏的【工具】,打开的菜单单击【选项】命令。

[page]

3、切换到【编辑】标签,将【使用智能段落选择范围】前面的勾去掉,单击【确定】按钮。

4、选定最后一个段落标记之外的所有内容:先按【Ctrl+End】组合键,然后再按【Ctrl+Shift+Home】。

5、在常用工具栏依次单击【复制】、【新建空白文档】、【粘贴】按钮。

三、重建模板法

1、Word在“normal.dot”模板文件中存储默认信息,如果该文件被损坏,Word文档也有可能出问题。创建新的normal模板的步骤如下:

2、单击【开始】菜单,单击【运行】命令。

[page]

3、在【打开】栏粘贴以下%APPDATA%MicrosoftTemplates,单击【确定】按钮。

4、打开的文件夹窗口将【normal.dot】文件删除掉。

5、如果看不到normal.dot文件,可能是被隐藏起来了。需这样设置:在最上方菜单栏依次单击【工具】——【文件夹选项】。

6、切换到【查看】选项卡,在【高级设置】列表框将【隐藏受保护的操作系统文件(推荐)】前面的勾去掉,并选择【显示所有文件和文件夹】,单击【确定】按钮使设置生效。

7、创建新的normal模板后,可以尝试打开损坏的文档。如果问题解决了,那就表明旧的normal模板确实已经损坏。此外,如果你的文档还用到了“normal.dot”之外的其他模板,为解决问题,也请尝试重新创建该模板或使用它的较早版本。

相关问题推荐:

Word文档打不开怎么办 word文档打不开解决方法

Word插入文件提示“创建Word对象出错”怎么解决

Word文档工具栏不见怎么办 word工具栏怎么恢复

关于七招挽回受损word文档七招挽回受损word文档的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于C# 复制一个Word文档的部分或全部内容到另一个Word文档、java使用POI工具读取word文档并写入生成新的word文档及错误整理、PPT文档怎么转Word文档 PPT转Word文档的操作方法、WinXP系统Word文档损坏打不开 Word文档损坏怎么办的相关知识,请在本站寻找。

本文标签: