如何使用Pandas/Dataframe或xlrd/xlwt在现有Excel/XLS文件中追加数据

2024-09-28 05:21:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名初学者,在使用XLS文件的同时学习Python。下面的代码工作正常,但我希望将搜索结果写回包含许多工作表且每个工作表都有现有数据的XLS文件(希望在现有数据的末尾写入/追加数据)。我在互联网上搜索,如果我能找到解决方案如何写回XLS文件。无论我发现什么都不起作用。现在我正在挠头,准备放弃。如果需要,请帮忙

这就是我正在做的

  1. 从工作簿wbTGT读取,是XLS文件,有许多工作表
  2. 在工作簿wbSRC中搜索,它只有一个Sheet。XLS文件
  3. 如果搜索找到任何内容,则将结果写回相关工作表中的工作簿wbTGT(在每个工作表中追加数据,例如shSRC.nrows+1,搜索可以为每个工作表返回多行)
  4. 我使用的是Windows 10,安装了:Python39、xlwt 1.3.0、xlutils-2.0.0、xlsxwriter-3.0.1、openpyxl
  5. 如果Pandas/dataframe可以解决这个问题,或者Pandas/dataframe和xlrd/xlwt的组合,我可以

这是我的密码:

import xlrd    
wbTGT = xlrd.open_workbook('C:\\Users\\User\\Desktop\\jnk\COT_DATAPython.xls')  
wbSRC = xlrd.open_workbook('C:\\Users\\User\\Desktop\\jnk\AnnualOf.xls')  
shSRC = wbSRC.sheet_by_index(0)  
for sheet in range(wbTGT.nsheets):
    shTGT = wbTGT.sheet_by_index(sheet)  
    print('Sheet Name: ', shTGT.name)
    SearchVal = shTGT.cell_value(0,0)
    SearchDate = shTGT.cell_value(2,0)
    for row in range(shSRC.nrows):
        if shSRC.cell_value(row, 0) == SearchVal:
            i = row
            if shSRC.cell_value(i, 2) == SearchDate:
                break   #exit the program
            else:   
                print((i+1),shSRC.cell_value(i+1, 2),shSRC.cell_value(i+1, 7),shSRC.cell_value(i+1, 8),shSRC.cell_value(i+1, 9),shSRC.cell_value(i+1, 11),shSRC.cell_value(i+1, 12),shSRC.cell_value(i+1, 15),shSRC.cell_value(i+1, 16))
# SEARCH workbook wbSRC, SHEET (0), IF MATCHING FOUND THEN WRITE  IN workbook wbTGT in related sheets (end of each sheet e.g. shSRC.nrows+1, search can return more than one line for each sheet) 

Tags: 文件数据inforvaluecellxlssheet

热门问题