颂风侯 发表于 2024-11-19 08:11:16

导出word文档中数据

用tkinter指定一个.doc或者.docx的文件,
再用tkinter指定一个文件夹位置


将.doc或者.docx的文件中最后一个表格导出数据,在指定的文件夹位置新建一个名字为“整理数据.xlsx”,将数据保存到这个excel文件中去

FishC 发表于 2024-11-19 08:11:31

要完成你所描述的任务,你需要执行以下步骤:

1. 使用tkinter的`filedialog`模块来选择Word文档和指定文件夹位置。
2. 使用`python-docx`处理Word文档来读取最后一个表格。
3. 使用`openpyxl`库将数据写入Excel文件。

以下是一个简化的示例代码:

import os
from tkinter import Tk
from tkinter.filedialog import askopenfilename, askdirectory
from docx import Document
from openpyxl import Workbook

# 初始化Tkinter
root = Tk()
root.withdraw()# 隐藏主窗口

# 选择Word文档路径
word_file_path = askopenfilename(title="选择Word文档", filetypes=[("Word 文件", "*.docx")])

# 选择文件夹
folder_path = askdirectory(title="选择保存文件的文件夹")

# 打开Word文档并获取最后一个表格
document = Document(word_file_path)
tables = document.tables
last_table = tables[-1]# 最后一个表格

# 读取表格数据
table_data = []
for row in last_table.rows:
    row_data =
    table_data.append(row_data)

# 创建一个新的Excel文件
workbook = Workbook()
sheet = workbook.active

# 将表格数据写入Excel文件
for row_index, row_data in enumerate(table_data):
    for col_index, cell_data in enumerate(row_data):
      sheet.cell(row=row_index + 1, column=col_index + 1, value=cell_data)

# 保存Excel文件
excel_file_name = "整理数据.xlsx"
excel_file_path = os.path.join(folder_path, excel_file_name)
workbook.save(excel_file_path)

print(f"数据已导出到: {excel_file_path}")

请确保在运行此代码之前安装了必要的库:

pip install python-docx openpyxl

以上代码做了以下工作:
- 使用tkinter选择Word文件和目标文件夹。
- 读取Word文档的最后一个表格。
- 将表格中的数据写入新的Excel文件,并保存在指定的文件夹中。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

颂风侯 发表于 2024-11-19 08:55:17

如果前面提到的word文档是.doc格式的,应该怎么改改呢

FishC 发表于 2024-11-19 08:55:28

颂风侯 发表于 2024-11-19 08:55
如果前面提到的word文档是.doc格式的,应该怎么改改呢

对于`.doc`格式的Word文档,可以使用`pywin32`库来处理,因为`python-docx`库仅支持`.docx`格式。下面是代码的调整和示例:

import os
from tkinter import Tk
from tkinter.filedialog import askopenfilename, askdirectory
import win32com.client as win32
from openpyxl import Workbook

# 初始化Tkinter
root = Tk()
root.withdraw()# 隐藏主窗口

# 选择Word文档路径
word_file_path = askopenfilename(title="选择Word文档", filetypes=(("Word 文件", "*.doc"), ("所有文件", "*.*")))

# 选择文件夹
folder_path = askdirectory(title="选择保存文件的文件夹")

# 打开Word文档并获取最后一个表格
word = win32.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(word_file_path)
tables = doc.Tables
last_table = tables(tables.Count)

# 读取表格数据
table_data = []
for row in last_table.Rows:
    row_data =
    table_data.append(row_data)

# 创建一个新的Excel文件
workbook = Workbook()
sheet = workbook.active

# 将表格数据写入Excel文件
for row_index, row_data in enumerate(table_data):
    for col_index, cell_data in enumerate(row_data):
      sheet.cell(row=row_index + 1, column=col_index + 1, value=cell_data)

# 保存Excel文件
excel_file_name = "整理数据.xlsx"
excel_file_path = os.path.join(folder_path, excel_file_name)
workbook.save(excel_file_path)

print(f"数据已导出到: {excel_file_path}")

# 关闭Word文档
doc.Close(False)
word.Quit()

在运行此代码之前,需要确保安装`pywin32`库,安装命令如下:

pip install pywin32

注意:该解决方案仅适用于Windows操作系统,因为它依赖于Win32 COM接口来控制Word应用程序。确保在执行代码之前关闭其他的Word实例,以避免冲突。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 导出word文档中数据