首页 > 解决方案 > 使用 Openpyxl 在 Excel 中创建 3 个表

问题描述

我正在尝试在一个 excel 文件中创建 3 个表,但是它们是在另一个之下创建的。我希望将它们放在一起。我怀疑 append 导致表在彼此下创建。你能帮我么!

sh2.append(["Market Sector", "Assets (in GBP)"])
for column in small:
    sh2.append(column)
tab = Table(displayName="Small_Companies", ref="A1")

sh2.append(["Market Sector", "Assets (in GBP)"])
for column in medium:
    sh2.append(column)
tab = Table(displayName="Mid_Companies", ref="D1")

sh2.append(["Market Sector", "Assets (in GBP)"])
for column in large:
    sh2.append(column)
tab = Table(displayName="Mid_Companies", ref="G1")

标签: pythonopenpyxl

解决方案


一个简单的解决方案是使用zip组合三个列表并将它们全部附加在一起。我不知道这三个列表的大小是否相同,所以我首先将它们附加到相同的长度。此外,您对 Table 函数的调用也不完全正确, ref 参数需要表格的范围。我只是假设你有 5 行。

max_length = max(max(len(small), len(medium)), len(large))
small += [""] * (max_length - len(small))
medium += [""] * (max_length - len(medium))
large += [""] * (max_length - len(large))
sh2.append(["Market Sector", "Assets (in GBP)","Market Sector", "Assets (in GBP)","Market Sector", "Assets (in GBP)"])
for (c1,c2,c3) in zip(small,medium,large):
    sh2.append(c1+c2+c3)
tab1 = Table(displayName="Small_Companies",ref="A1:C5")
tab2 = Table(displayName="Mid_Companies",ref="D1:F5")
tab3 = Table(displayName="Large_Companies", ref="G1:I5")
sh2.add_table(tab1)
sh2.add_table(tab2)
sh2.add_table(tab3)

推荐阅读