从一个工作表复制数据然后将其粘贴到另一个Excel工作表时,Openpyxl边框线会断开

时间:2017-11-28 09:06:07

标签: python excel openpyxl

我尝试使用Openpyxl做的是我从excel表复制一些单元格的值,然后打开另一个excel表并粘贴这些值。 出乎意料的是我得到了边框线断裂的纸张,特别是组合的单元格。

我想听听你的意见。 此外,还有更好的循环细胞方法吗?目前只有三个细胞,但如果它超过100个...... 非常感谢你。

{{1}}

1 个答案:

答案 0 :(得分:0)

我可能会误解这个问题,但嵌套的for循环看起来很理想...

from openpyxl import load_workbook
import os
from os.path import exists

target_file = input('ex)201711 ')
wb = load_workbook(target_file + '.xlsm', data_only=True)
sheet = wb['summary']
num_people = len(sheet['A:A'])
num_vals = 3

for i in range(1, num_people):
    for j in range(1,numvals+1):
        val[j] = sheet.cell(row=i + 1, column=j).value

    file_name = '2017(' + val[1] + ').xlsx'
    if not exists(file_name):
        continue
    else:
        wb = load_workbook(file_name, data_only=True)
        sheet2 = wb['summary2']
        for j in range(1,numvals+1):
            sheet2.cell(row=1, column=j).value = val[j]
        wb.save(file_name)

此外,openpyxl现在支持数组索引样式的单元格引用,这可以使事情更容易读/写:

#these are equivalent
sheet2.cell(row=1, column=j).value = val[j]
sheet2.[openpyxl.utils.get_column_letter(j) + '1'] = val[j]

关于格式化边框,在openpyxl中(遗憾的是)必须明确指定合并单元格上的所有边框,这与默认的excel操作不同,后者在合并上应用了topleft单元格的样式。