关于word“无法打开文件 ,因为内容有错误”的解决方法

前段时间写大论文,突然遇到了如下图问题。
在这里插入图片描述
经过激烈斗争,终于用最后一种方法重新打开了大论文,在此记录。

1.利用wps打开

可以尝试利用wps打开论文,有时可以打开全文,有时只能打开一半文章。
在这里插入图片描述

2.利用office自带修复工具修复

在控制面板的添加删除程序中找到office,并进行修复。

3.利用大神编写的修复工具修复

在http://www.wordarticles.com/temp/Rebuilder.dotm网站可以下载到大神编写的Rebuilder插件,打开插件,选择启用编辑内容,选择broken documents选项卡里的rebuild工具,在弹出的对话框中选择需要修复的文件即可。
在这里插入图片描述

4.利用FirstObjectXMLEditor工具修复

通过FirstObjectXMLEditor工具,直接修改word里的xml文件。先百度,把FirstObjectXMLEditor工具下下来,然后,把待修复的docx文件的后缀名改为.zip。
在这里插入图片描述
切记,直接把docx后缀名改为.zip,而不是压缩。
第二,打开zip,找到word文件夹下的document.xml文件,拖到桌面上。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后利用FirstObjectXMLEditor工具打开document.xml文件进行修复。
在这里插入图片描述
打开后先进行对齐排版,然后在工具栏选择分析文档,在编辑器下方会出现存在的问题。
在这里插入图片描述
修改时,需要在右侧的框中找到在偏移位置(一般偏移位置会比真正需要添加标记的位置靠下),如图片所示位置偏移位置为1852,我需要在1851的位置插入结束标志。注意,结束标志为</开始标志>,例如,当前起始标记为<w:rPr>,则结束标志为</w:rPr>。
在这里插入图片描述
在这里插入图片描述
问题都改完后,把文档拖回zip文件,把后缀名改为docx即可。

### 回答1: 以下是在C语言中打开word文件并读取文件内容的代码示例: ``` #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char fileName[] = "example.docx"; char buffer[100]; fp = fopen(fileName, "r"); if (fp == NULL) { printf("Error opening file %s!\n", fileName); exit(1); } while (fgets(buffer, 100, fp) != NULL) { printf("%s", buffer); } fclose(fp); return 0; } ``` 该代码使用了`fopen`函数来打开文件,并使用`fgets`函数读取文件中的内容,最后使用`fclose`关闭文件。请注意,在读取`.docx`格式的文件时,可能需要使用其他库或方法来解析其内容。 ### 回答2: 以下是用C语言编写的打开Word文件并读取文件内容的代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *filePointer; char wordFilePath[100]; char fileContent[1000]; printf("请输入Word文件路径:"); gets(wordFilePath); filePointer = fopen(wordFilePath, "r"); if (filePointer == NULL) { printf("无法打开文件!\n"); exit(1); } printf("文件内容:\n"); while(fgets(fileContent, sizeof(fileContent), filePointer) != NULL) { printf("%s", fileContent); } fclose(filePointer); return 0; } ``` 这段代码首先声明了所需的变量,包括文件指针`filePointer`用于指向打开Word文件、`wordFilePath`用于储存用户输入的文件路径、`fileContent`用于储存文件内容。 然后通过`gets`函数获取用户输入的Word文件路径,并使用`fopen`函数以只读方式打开该文件。如果文件打开失败,程序会输出相应错误信息并退出。 接着使用`fgets`函数来逐行读取文件内容,并将每行内容打印出来。最后通过`fclose`函数关闭文件指针。 需要注意的是,这段代码假设Word文件是以纯文本格式保存,并且文件内容总字节数不超过1000。如果文件内容过长,需要相应地调整`fileContent`数组的大小。另外,代码没有对读取的内容进行任何处理,如果有特定的处理需求,可以在读取内容后进行相应的操作。 ### 回答3: 在C语言中,可以使用Windows API函数来打开和读取Word文件的内容。下面是一个示例代码: ```c #include <stdio.h> #include <windows.h> int main() { LPCSTR filename = "example.docx"; // Word文件的名称 HANDLE hFile = CreateFile(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("无法打开文件:%s\n", filename); return 1; } DWORD dwFileSize = GetFileSize(hFile, NULL); LPSTR lpFileContent = (LPSTR) malloc(dwFileSize + 1); if (lpFileContent == NULL) { printf("内存分配失败\n"); CloseHandle(hFile); return 1; } DWORD dwBytesRead; if (!ReadFile(hFile, lpFileContent, dwFileSize, &dwBytesRead, NULL)) { printf("读取文件内容失败\n"); free(lpFileContent); CloseHandle(hFile); return 1; } lpFileContent[dwFileSize] = '\0'; // 字符串结尾需要添加'\0' printf("文件内容:\n%s\n", lpFileContent); free(lpFileContent); CloseHandle(hFile); return 0; } ``` 这段代码通过CreateFile函数打开Word文件,并使用GetFileSize函数获取文件大小。然后使用malloc函数分配内存,使用ReadFile函数从文件读取内容,并将内容打印到控制台中。最后使用free函数释放内存,并使用CloseHandle函数关闭文件句柄。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值