上周在处理word文档时,遇到了报错:"docx.opc.exceptions.PackageNotFoundError: Package not found.....",通过观察文档发现是因为docx模块只能处理docx文件,而无法处理doc文件。以下是我的处理办法。
1、通过修改文件扩展名将后缀改为docx,无法解决问题。
2、使用word或者wps打开文档,选择另存为,将文档另存为docx格式,能够解决。
进一步处理(大批量):
因为我需要处理大批次的文档,所以我无法一个一个利用方法2去手动转换。因此我想到了wps的批量格式转换。
结果:批量转换的文档依然无法使用,依旧会报错,所以我将手动创建的docx文档与批量转换的文档的详细属性进行一一对比发现问题。
wps批量转换时会自动插入自定义属性,位置在右键点击文件——>属性——>自定义属性。通过手动删除自定义属性后发现文档可以使用。
但上述方法并不具有可操作性,因为过了一段时间后,通过这种方法处理文件,依旧会报错,并且我们无法手动大批量的一一进行属性删除工作。
最终解决(大批量处理问题):
使用word的vba进行解决:
步骤1:打开word,按alt + f11进入vba页面
步骤2:点击插入标签下的模块选项
步骤3:在弹出的窗口输入以下代码
Sub doc2docx() 'doc文件转docx文件
Dim myDialog As FileDialog, oFile As Variant
Set myDialog = Application.FileDialog(msoFileDialogFilePicker)
With myDialog
.Filters.Clear '清除所有文件筛选器中的项目
.Filters.Add "所有 WORD97-2003 文件", "*.doc", 1 '增加筛选器的项目为所有WORD97-2003文件
.AllowMultiSelect = True '允许多项选择
If .Show = -1 Then '确定
For Each oFile In .SelectedItems '在所有选取项目中循环
With Documents.Open(oFile)
.SaveAs FileName:=Replace(oFile, "doc", "docx"), FileFormat:=12
.Close
End With
Next
End If
End With
End Sub
步骤4:点击运行菜单下的,运行子过程
步骤5:选取文件,可以一次大批量选择文件,点击确定就可以执行了。
问题最终得到解决!!!