我正在使用xlutils并复制工作表。下面的代码成功复制了第一个工作表并添加了2个副本,但是当我写入每个工作表时,它将更改应用于所有工作表副本以及原始副本。
所以下面的例子,所有3个工作表上的第3行,第0/1列的值是“test2”。
有谁知道我在这里做错了什么?我也尝试添加每个克隆,然后尝试一个workbook.get_sheet(id).write(x,x,x),并且完全相同的事情发生。
workbook = xlutils.copy.copy(xlrd.open_workbook(xls_out, formatting_info=True))
tmp_workbook = copy(workbook)
copied_sheet = copy(tmp_workbook.get_sheet(0))
copied_sheet.set_name("tmpsheet")
copied_sheet.write(3, 0, 'test1')
copied_sheet.write(3, 1, 'test1')
workbook._Workbook__worksheets.append(copied_sheet)
copied_sheet = copy(tmp_workbook.get_sheet(0))
copied_sheet.set_name("tmpsheet2")
copied_sheet.write(3, 0, 'test2')
copied_sheet.write(3, 1, 'test2')
workbook._Workbook__worksheets.append(copied_sheet)
workbook.save(xls_out)
答案 0 :(得分:1)
使用深度显示。将插入引用复制到原始和deepcopy中找到的对象构造一个新的化合物,然后将副本插入到原始对象中找到的对象。