【发布时间】:2020-05-19 10:02:54
【问题描述】:
我想从一张表中取出某部分数据并将其复制到另一张表中。
到目前为止,我有一个字典,其中键作为开始行,值作为结束行。
使用这个,我想做以下事情:
-从 sheet0 中获取第一个范围并将其附加到 sheet1
-从 sheet0 中获取第二个范围并将其附加到 sheet2
-从 sheet0 中获取第三个范围并将其附加到 sheet3
我尝试了以下方法:
#First range starts at 1 and ends at 34, second range from 34-52 and third from 52-75
myDict = {1: 34, 34: 52, 52: 75}
#store all the sheets, ignoring main sheet
sheet = wb.worksheets[1:]
for item in myDict:
for col in ws.iter_cols(min_row=item, max_row=myDict[item], min_col=1 , max_col=ws.max_column):
for cell in col:
for z in sheet:
z.append(col)
另一种方法是使用函数和列表:
startRow=[1,34,52]
endRow=[34,52,75]
def addRange(first, second):
for col in ws.iter_cols(min_row=first, max_row=second, min_col=1 , max_col=ws.max_column):
for cell in col:
for z in sheet:
z.append(col)
#Call function
for start, end in zip(startRow, endRow):
addRange(start, end)
但在这两种情况下,我都会收到以下错误“ValueError:无法从其他工作表复制单元格”
有人知道我在这里缺少什么吗?
提前致谢!
【问题讨论】:
-
我注意到几件事:你的代码中没有 ws 声明。您不能将 col 附加到工作表。你要附加值。因此,您必须迭代到单元格级别,然后将单元格值添加到您的工作表中。找到一种方法来压缩带有范围的工作表名称,这应该会让你的迭代更容易
-
感谢萨米的提问。我没有添加不必要的介绍代码。 ws 是这样制作的:#wb = xl.Workbook() #ws = wb.active
-
@sammywemmy 我添加了“for cell in col”来遍历单元格。
-
分享一个示例文件,我会用它来看看问题出在哪里,或者建议其他方法
-
@sammywemmy 我在这里使用 WeTransfer 添加了 Excel 文件和 Info 记事本文件:wetransfer.com/downloads/…
标签: python excel pandas openpyxl