xlwings 公式法的应用
  X5zJxoD00Cah 2023年11月02日 39 0

背景:

打开df_0 如图所示

xlwings 公式法的应用_xlwings

新建sht

打开sht1

提取sht1的行数n 列数m

提取df_0的列数M


将sht1的内容sht1_used复制到sht, 即sht_左表

位于第1列~第1+(m-1)列


下面生成sht_右表

将df_0的标题行复制到sht 位于sht_左表的右侧 空一列 即右移m+1列

即位于第m+2列~第m+2+(M-1)列

for i in [1,n]:

for j in [1, M]:

生成公式, 其中i来源于sht1的行数n, j来源于df_0的列数M, 公式内的字母列来自sht1

sht.cells(行, 列).formula = 公式, 其中列=j+右移列数



app = xw.App(visible= True, add_book= False)
app.display_alerts = True,
app.screen_updating = True

wb = app.books.add()
sht = wb.sheets[0]
sht.name = '内部核对-2030'

wb_1 = app.books.open(wj_1)
sht_1 = wb_1.sheets[0]

sht_1.used_range.copy(sht.range('A1'))
n = sht.used_range.last_cell.row
m = sht.used_range.last_cell.column
M = df_0.shape[1]

sht.cells(1, m+2).value = df_0.columns.tolist()
for i in range(2, n+1):
    for j in range(1, M+1):
        str_form = df_0.iloc[0, j-1]
        str_form = str_form.replace('{}', str(i))
        str_form = '=' + str_form
        sht.cells(i,j+m+1).formula = str_form

'''这种公式法会有两个问题'''
# 源数据行列变化 就会错位 比如sap导出的列是否完整
# 公式行列变化 就会错位 比如两个表之间空一列还是两列
# 所以还是老实用pandas明确指定列吧
wb.save('save.xlsx')
wb.close()
wb_1.close()
app.kill()
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

X5zJxoD00Cah