我正在用python制作一个excel比较工具。这是我的代码:
bananacell.py:
import time
print("Welcome to Banana Cell the open source excel tool!")
time.sleep(1)
import compare
compare.main()compare.py:
import openpyxl, tkinter, time
from tkinter import Tk
from tkinter.filedialog import askopenfilename
from openpyxl.utils import get_column_letter
def main():
print('Select file 1 from folder')
root = Tk()
filename = askopenfilename()
root.withdraw()
wb1 = openpyxl.load_workbook(filename)
names1 = input('Sheet 1 name: ')
sheet1 = wb1.get_sheet_by_name(str(names1))
print('Select file 2 from folder')
root1 = Tk()
filename1 = askopenfilename()
root1.withdraw()
wb2 = openpyxl.load_workbook(str(filename1))
names2 = input('Sheet 2 name: ')
sheet2 = wb2.get_sheet_by_name(str(names2))
object1 = list(sheet1['A1':get_column_letter(sheet1.max_row)])
object2 = list(sheet2['A1':get_column_letter(sheet2.max_row)])
for i in object1:
for x in object2:
if i != x:
print('Diff found!')
print (i.value, i.coordinate)
print (x.value, x.coordinate)
print('----------')
break但我一直得到以下ValueError:

有人知道怎么解决这个问题吗?任何帮助都将不胜感激。
发布于 2017-03-11 10:26:14
看来你达到了工作表中列的极限。
openpyxl支持的工作表中最大18,278列的是有限度的,以及更少 (16,384)和Apple (仅255列)中的更少。
可以在代码中添加检查,如下所示:
MAX_COLUMNS = 18278
if active_sheet.max_column > MAX_COLUMNS:
raise ValueError(
'Too many columns in the sheet, the limit is {}, found: {}'.format(
MAX_COLUMNS,
ctive_sheet.max_column,
)
)或者创建一个支持更多列的将请求拉到openpyxl :)
发布于 2017-03-11 19:01:07
这是错误的:
object1 = list(sheet1['A1':get_column_letter(sheet1.max_row)]) 你通过类似于sheet1['A1':D]的东西,你想要sheet1['A1':D1000]
我相信这个嵌套循环是行不通的:
for i in object1: for x in object2:
https://stackoverflow.com/questions/42733528
复制相似问题