
python不实用?学了python不知道怎么用?今天这篇文章,所长带你们实打实看看python 到底怎么帮助我们工作。学会python能让你的工作百倍提高效率,真不夸张!
今天遇到一个特别有意思的小需求,是个同事拜托我一个真实的需求。事情是这样的,这个同事他需要处理一个文档,这个文档有200多页。每页有2个表格,他需要吧其中一个表格,提取出来,合并到一个大的excel中。
因为他没有学习过python,纯用手估计要弄个几天去了。于是他找到我,问我python能不能搞定这个问题。我看了一眼,这个需求,用python 几分钟就解决了!

首先第一步,分解需求。
1 我们需要读入一个word文件。
2 读取word中的全部表格。
3 根据特征选出需要的表格,在这里特征就是我们需要的表格,第一个单元一定是“序号”这两个字。大家可以根据自己的情况寻找过滤条件。
4 修改序号列,让他逐步累加。每个表的序号都是从1开始的,这里我们需要让他持续累加。
5 保存结果到excel文件。
这里我们需要用到两个python库:docx、openpyxl 。docx用来处理word,openpyxl 用来处理表格的。
第二步,写代码。完整的代码如下,直接复制可用:
from docx import Document
from openpyxl import Workbook
def extract_all_tables_from_word(word_file, excel_file):
# Load the Word document
doc = Document(word_file)
# Create a new Excel workbook
wb = Workbook()
ws = wb.active
# Counter for the row index in the destination worksheet
row_counter = 1
t_c = 0
cell_count = 1
# Iterate through all tables in the document
for table in doc.tables:
# Check if the first cell text is "序号"
first_cell_text = table.cell(0, 0).text.strip()
if first_cell_text != "序号":
continue
else:
print(t_c)
t_c+=1
# Iterate through the rows and columns of the table
for row in table.rows:
# Increment the row index in the destination worksheet
for j, cell in enumerate(row.cells, start=1):
# Write the cell value to the Excel workshee
if row_counter != 1 and j == 1:
ws.cell(row=row_counter, column=j).value = str(row_counter)
else :
ws.cell(row=row_counter, column=j).value = cell.text
row_counter += 1
# Save the Excel file
wb.save(excel_file)
print(f"All tables extracted from '{word_file}' and saved to '{excel_file}'.")
# Usage example
word_file = '1.docx' # Replace with your Word file path
excel_file = '1.xlsx' # Replace with the desired output Excel file path
extract_all_tables_from_word(word_file, excel_file)
以下是代码的作用和工作原理的详细解释:
1. 首先,我们导入了需要使用的库,包括`docx`用于读取Word文档,以及`openpyxl`用于创建和操作Excel文件。
2. `extract_all_tables_from_word`函数用于从Word文档中提取所有的表格,并将它们保存到Excel文件中。
3. 首先,我们加载Word文档,通过传递`word_file`参数指定文档的路径,然后创建一个新的Excel工作簿。
4. 我们定义了一些变量来跟踪目标工作表的行索引、表格计数和单元格计数。
5. 然后,我们使用`for`循环遍历文档中的所有表格。
6. 对于每个表格,我们检查第一个单元格的文本是否为"序号"。如果不是,表示这个表格不符合要求,我们使用`continue`语句跳过该表格。如果是,表示我们找到了一个符合要求的表格,我们增加表格计数并继续处理该表格。
7. 接下来,我们使用嵌套的`for`循环遍历表格中的所有行和单元格。
8. 对于每个单元格,我们根据所在行的索引和单元格的列索引,将单元格的文本值写入目标Excel工作表的相应单元格。如果行索引不等于1且列索引等于1,表示当前单元格是该行的第一个单元格,我们将行索引作为文本值写入该单元格,用于填充序号。
9. 在写入完一行的数据后,我们增加行计数器,以便在下一行写入数据。
10. 循环结束后,我们保存Excel文件,将工作簿中的数据写入指定的Excel文件中。
11. 最后,我们打印一条消息,表示已经成功从Word文档中提取所有的表格,并将它们保存到Excel文件中。
12. 使用示例中,我们提供了要处理的Word文件的路径和要保存的Excel文件的路径。您可以根据需要修改这些路径。
运行过程,只需要把代码和word文档放在一起,替换掉代码中的文件名在命令行运行即可等待生成结果,最后的结果如下:

由于涉及到数据保密性,这里图片我隐去了全部敏感信息。
好啦今天的分享就到这里,欢迎大家关注,收藏,分享。有任何问题可以给我留言!