如何使用python写入现有的excel文件而不丢失以前的信息?

时间:2017-08-12 17:37:31

标签: python excel pandas append

我需要编写一个程序来废弃某个网页的每日报价,并将它们收集到一个excel文件中。我写了一些找到下一个空行并开始在其上写新引号但删除前一行的内容:

wb = openpyxl.load_workbook('gold_quote.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
.
.
.
z = 1
x = sheet['A{}'.format(z)].value

while x != None:
    x = sheet['A{}'.format(z)].value
    z += 1

writer = pd.ExcelWriter('quote.xlsx')
df.to_excel(writer, sheet_name='Sheet1',na_rep='', float_format=None,columns=['Date', 'Time', 'Price'], header=True,index=False, index_label=None, startrow=z-1, startcol=0, engine=None,merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
writer.save()

3 个答案:

答案 0 :(得分:0)

writer.book = wb
writer.sheets = dict((ws.title, ws) for ws in wb.worksheets)

答案 1 :(得分:0)

  

问题:如何在不丢失先前信息的情况下在现有Excel文件上书写

openpyxl使用append在上次使用的行之后写入:

wb = openpyxl.load_workbook('gold_quote.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')

rowData = ['2017-08-01', '16:31', 1.23]
sheet.append(rowData)

wb.save('gold_quote.xlsx')

答案 2 :(得分:0)

我想通了,首先我们应该定义一个读取器来读取excel文件的现有数据,然后将最近从web中提取的数据与定义的编写器连接起来,我们应该删除重复项,否则在程序执行的任何时候都会有很多重复数据。然后我们可以写完前一个和新的数据:

excel_reader = pd.ExcelFile('gold_quote.xlsx')
to_update = {"Sheet1": df}

excel_writer = pd.ExcelWriter('gold_quote.xlsx')

for sheet in excel_reader.sheet_names:
    sheet_df = excel_reader.parse(sheet)
    append_df = to_update.get(sheet)

    if append_df is not None:
        sheet_df = pd.concat([sheet_df, df]).drop_duplicates()

    sheet_df.to_excel(excel_writer, sheet, index=False)

excel_writer.save()