用python如何将word文档中图片的表格转换到Excel里面
时间: 2025-06-29 10:18:38 浏览: 13
### 使用 Python 提取 Word 文档中的图片和表格并转换至 Excel
为了实现这一目标,可以采用 `python-docx` 和 `pandas` 这两个库来读取Word文档的内容,并利用 `openpyxl` 或者 `xlsxwriter` 来创建Excel文件。对于图像的提取,则可以通过 `docx` 库配合自定义逻辑完成。
#### 安装必要的库
首先安装所需的Python包:
```bash
pip install python-docx pandas openpyxl pillow
```
#### 提取表格内容
下面是一个用于从多个Word文档中提取所有表格并将它们存储在一个单独的工作簿的不同工作表里的例子[^1]:
```python
from docx import Document
import pandas as pd
import os
def extract_tables_from_doc(doc_path, output_excel):
writer = pd.ExcelWriter(output_excel, engine='xlsxwriter')
for root, dirs, files in os.walk(doc_path):
for file_name in files:
if file_name.endswith(".docx"):
document = Document(os.path.join(root, file_name))
table_count = 0
for i, table in enumerate(document.tables):
data = []
keys = None
for j, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if not keys and j == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
df = pd.DataFrame(data)
sheet_name = f"{os.path.splitext(file_name)[0]}_Table_{i}"
df.to_excel(writer, sheet_name=sheet_name, index=False)
table_count += 1
writer.save()
```
这段代码遍历指定路径下所有的 `.docx` 文件,依次打开每一个文件,获取其中的所有表格对象,再把每一行的数据存入列表里形成字典形式的数据结构,最后把这些数据构造成 DataFrame 并写入到同一个 Excel 工作簿的不同 Sheet 中去。
#### 提取图片
关于图片部分,由于标准版 `python-docx` 不直接提供导出图片的功能,因此这里给出一种方法是从二进制流中解析出来:
```python
from docx import Document
from PIL import Image
import io
import shutil
def save_images_from_doc(input_file, image_folder="images/"):
if not os.path.exists(image_folder):
os.makedirs(image_folder)
document = Document(input_file)
rels = document.part.rels
img_counter = 0
for rId, rel in rels.items():
target_part = rel.target_part
try:
if "image" in str(target_part.content_type).lower():
binary_img = target_part.blob
im = Image.open(io.BytesIO(binary_img))
ext = im.format.lower()
filename = f'{image_folder}img{str(img_counter)}.{ext}'
with open(filename,'wb') as out_file:
shutil.copyfileobj(io.BytesIO(binary_img),out_file)
img_counter+=1
except Exception as e:
print(f'Error processing {rId}:',e)
save_images_from_doc('example.docx')
```
此函数会扫描给定的 .docx 文件内的关系集合 (`rels`) ,找到标记为图像的部分(`target_part`) 后将其作为二进制字符串取出,接着用 Pillow 解析这些字符串成实际的图形文件并保存下来。
阅读全文
相关推荐


















