用Python写一个对比两个.xls 文件内容的工具 并创建一个新文档 将差异化内容存入新文档内
时间: 2023-05-23 18:03:07 浏览: 193
好的,这是一个编程类的问题。可以回答。您可以使用Python的xlrd和xlwt模块来实现这个需求。具体的步骤如下:
1. 使用xlrd模块打开两个Excel文件,读取每个工作表的内容。
2. 使用Python内置的difflib模块比较两个工作表的内容,找到它们之间的差异化内容。
3. 创建一个新的Excel文件,使用xlwt模块将差异化内容写入新工作表中,并保存为.xls文件。
以下是一个示例代码:
```python
import xlrd
import xlwt
from difflib import ndiff
# 打开两个Excel文件
file1 = xlrd.open_workbook('file1.xls')
file2 = xlrd.open_workbook('file2.xls')
# 读取两个文件中的所有工作表的内容
sheets1 = file1.sheets()
sheets2 = file2.sheets()
# 创建一个新Excel文件
new_file = xlwt.Workbook(encoding='utf-8')
# 遍历两个文件中的每一个工作表
for i in range(len(sheets1)):
sheet1 = sheets1[i]
sheet2 = sheets2[i]
# 创建一个新工作表
new_sheet = new_file.add_sheet(sheet1.name)
# 获取两个工作表中的所有行数和列数
rows1 = sheet1.nrows
cols1 = sheet1.ncols
rows2 = sheet2.nrows
cols2 = sheet2.ncols
# 比较两个工作表中的内容,找到差异化的行和列
for r in range(rows1):
if r >= rows2:
# 如果文件2中行数不够,则直接将文件1中的内容全部添加到新表中
for c in range(cols1):
new_sheet.write(r, c, sheet1.cell_value(r, c))
else:
row1 = sheet1.row_values(r)
row2 = sheet2.row_values(r)
if row1 != row2:
# 使用difflib模块将两行内容进行比较,找到差异的位置
diff = ndiff([str(x) for x in row1], [str(x) for x in row2])
diff_cols = [i for i, x in enumerate(diff) if x.startswith('+') or x.startswith('-')]
# 将差异化的内容写入新表中
for c in diff_cols:
if c < cols1:
new_sheet.write(r, c, sheet1.cell_value(r, c))
if c < cols2:
new_sheet.write(r, c + cols1, sheet2.cell_value(r, c))
# 将未读取的文件2中的内容全部添加到新表中
for r in range(rows2):
if r >= rows1:
for c in range(cols2):
new_sheet.write(r, c + cols1, sheet2.cell_value(r, c))
# 保存新文件
new_file.save('new_file.xls')
print('新文件生成成功!')
```
阅读全文