鱼C论坛

 找回密码
 立即注册
查看: 74|回复: 3

[已解决]导出word文档中数据

[复制链接]
发表于 2024-11-19 08:11:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


将.doc或者.docx的文件中最后一个表格导出数据,在指定的文件夹位置新建一个名字为“整理数据.xlsx”,将数据保存到这个excel文件中去
最佳答案
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 = [cell.text for cell in row.cells]
    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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 = [cell.text for cell in row.cells]
    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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-19 08:55:17 | 显示全部楼层
如果前面提到的word文档是.doc格式的,应该怎么改改呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 = [cell.Range.Text.strip('\r\x07') for cell in row.Cells]
    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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表