鱼C论坛

 找回密码
 立即注册
查看: 312|回复: 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文件。

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

  1. import os
  2. from tkinter import Tk
  3. from tkinter.filedialog import askopenfilename, askdirectory
  4. from docx import Document
  5. from openpyxl import Workbook

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

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

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

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

  17. # 读取表格数据
  18. table_data = []
  19. for row in last_table.rows:
  20.     row_data = [cell.text for cell in row.cells]
  21.     table_data.append(row_data)

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

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

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

  33. print(f"数据已导出到: {excel_file_path}")
复制代码


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

  1. pip install python-docx openpyxl
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-11-19 08:11:31 | 显示全部楼层    本楼为最佳答案   
要完成你所描述的任务,你需要执行以下步骤:

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

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

  1. import os
  2. from tkinter import Tk
  3. from tkinter.filedialog import askopenfilename, askdirectory
  4. from docx import Document
  5. from openpyxl import Workbook

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

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

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

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

  17. # 读取表格数据
  18. table_data = []
  19. for row in last_table.rows:
  20.     row_data = [cell.text for cell in row.cells]
  21.     table_data.append(row_data)

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

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

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

  33. print(f"数据已导出到: {excel_file_path}")
复制代码


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

  1. pip install python-docx openpyxl
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-19 08:55:17 | 显示全部楼层
如果前面提到的word文档是.doc格式的,应该怎么改改呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

  1. import os
  2. from tkinter import Tk
  3. from tkinter.filedialog import askopenfilename, askdirectory
  4. import win32com.client as win32
  5. from openpyxl import Workbook

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

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

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

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

  18. # 读取表格数据
  19. table_data = []
  20. for row in last_table.Rows:
  21.     row_data = [cell.Range.Text.strip('\r\x07') for cell in row.Cells]
  22.     table_data.append(row_data)

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

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

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

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

  35. # 关闭Word文档
  36. doc.Close(False)
  37. word.Quit()
复制代码


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

  1. pip install pywin32
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-8 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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