markdown
#說明
這個有發現兩個做法,第一個是把word的doc檔案存成html格式,就會自動將圖片裝在同一個資料夾
第二種方法是,因為python 有一個方法是把 docx 存成 zip,在 zip 底下會有一個目錄都是存圖片的,所以做法是把原本的 doc 檔案先轉成 docx,接著再把docx轉成 zip,再將圖片存出來,再把 zip 轉回docx
相比之下第一個方法簡單多了!
#操作流程
##ToHtml參數8
```
#!/usr/bin/env python
#coding=utf-8
from win32com import client as wc
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(r"D:\Python\20191224_Bonescan\01.doc")
doc.SaveAs(r"D:\Python\20191224_Bonescan\1.html", 8)
doc.Close()
word.Quit()
print("finish")
```
##Demo
原始的 word
- download word
###執行程式後產出的樣子
##ToHtml參數10
```
#!/usr/bin/env python
#coding=utf-8
from win32com import client as wc
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(r"D:\Python\20191224_Bonescan\01.doc")
doc.SaveAs(r"D:\Python\20191224_Bonescan\1.html", 10)
doc.Close()
word.Quit()
print("finish")
```
##Demo
###執行程式後產出的樣子
##兩個參數相比:
參數10 後面的圖片資料夾比較乾淨,比較符合這次的目標萃取出圖片
##參考:
- https://www.itread01.com/content/1550459708.html
##第二種方法來囉~
#操作流程
##由於後續操作要用 docx 的檔案格式,所以先從 doc to docx
```
from win32com import client as wc #导入模块
word = wc.Dispatch("Word.Application") # 打开word应用程序
import os
docdir=r"D:\Python\20191224_Bonescan"
os.chdir(docdir)
files = os.listdir(docdir)
#print(files)
for file in files:
if file.endswith(".doc"): #匹配docx文件
#print(file)
a=docdir+'/'+file
doc = word.Documents.Open(a) # 打开word文件
doc.SaveAs("{}x".format(a), 16) # 另存为后缀为".docx"的文件,其中参数12指docx文件
doc.Close() # 关闭原来word文件
word.Quit()
print("finish")
```
##docx抓出圖片
```
#!/usr/bin/env python
# coding:gbk
import os,zipfile,shutil
def getimage(docdir):
os.chdir(docdir)
dirlist = os.listdir(docdir)
for i in dirlist:
if i.endswith(".docx"): #匹配docx文件
docname = i.split(".") #以“.”做成列表形式
os.rename(i,"%s.ZIP"%docname[0]) #重命名为ZIP格式
f = zipfile.ZipFile("%s.ZIP"%docname[0], 'r')
for file in f.namelist():
if "word" in file:
f.extract(file) #将压缩包里的word文件夹解压出来
f.close()
oldimagedir = r"%s\word\media"%docdir #定义图片文件夹
shutil.copytree(oldimagedir,"%s\%s"%(docdir,docname[0])) #拷贝到新目录,名称为word文件的名字
os.rename("%s.ZIP" % docname[0],"%s.docx"% docname[0]) #将ZIP名字还原为DOCX
shutil.rmtree("%s\word"%docdir) #删除word文件夹
if __name__=="__main__":
getimage(r"D:\Python\20191224_Bonescan")
```
##Demo
##參考:
- https://zhuanlan.zhihu.com/p/64189783
- https://blog.csdn.net/qq_15969343/article/details/81673970
- https://blog.csdn.net/orange_wrj/article/details/77945878
這個出來圖片也是屬於乾淨的,只是程式邏輯有一點複雜,但是我有遇到有一個特殊的情況,無法用這個方法
就是在 doc 轉成 docx 的時候,有些圖片無法轉換成功,這裡猜測原本的圖片可能不屬於 jpg或是png這一類型的,或是在貼上圖片的時候採用匯入等方法
都可能導致後續 doc轉 docx 不成功,所以後來我還是採用 doc 轉 html 抓圖
##Demo:doc to docx 圖片失敗
這個後續目前沒有想到解法.....
留言
張貼留言