如何将数据写入具有多个工作表的现有“.xlsx”文件中

时间:2016-01-13 12:48:52

标签: python excel xlsx xlsxwriter

我必须将数据更新/附加到现有的xlsx文件中。

xlsx文件包含多个工作表。 例如,我想将一些数据附加到现有的工作表'Sheet1',如何做到这一点

2 个答案:

答案 0 :(得分:6)

要将新行数据附加到现有电子表格,您可以使用openpyxl模块。这将:

  1. 从文件中加载现有工作簿。
  2. 使用ws.get_highest_row()
  3. 确定正在使用的最后一行
  4. 在下一个空行添加新行。
  5. 将更新的电子表格写回文件
  6. 例如:

    import openpyxl
    
    file = 'input.xlsx'
    new_row = ['data1', 'data2', 'data3', 'data4']
    
    wb = openpyxl.load_workbook(filename=file)
    ws = wb.get_sheet_by_name('Sheet1')
    row = ws.get_highest_row() + 1
    
    for col, entry in enumerate(new_row, start=1):
        ws.cell(row=row, column=col, value=entry)
    
    wb.save(file)
    

    注意,可以在XlsxWriter的文档中看到:

      

    XlsxWriter仅作为文件编写器设计。它无法读取或修改   现有的Excel文件。

    此方法不需要安装Windows / Excel,但对支持级别有一些限制。

答案 1 :(得分:3)

尝试xlwings(目前可从http://xlwings.org获得),它适用于读取和写入excel文件。

您需要的一切都在quickstart tutorial中。这样的事情应该是你想要的。

import xlwings as xw

with open("FileName.xlsx", "w") as file:
    wb = xw.Book(file)  # Creates a connection with workbook
    xw.Range('A1:D1').value = [1,2,3,4]

选择工作表

为了读取和写入特定工作表的数据。您可以激活工作表,然后拨打Range('cell_ref')

Sheet('Sheet1').activate();

使用范围选择单元格

在当前工作表中选择单个单元格

a = xw.Range('A1').value;
xw.Range('A1').value = float(a)+5;

明确选择一系列细胞

xw.Range('A1:E8').value = [new_cell_values_as_list_of_lists];
xw.Range('Named range').value = [new_cell_values_as_list_of_lists];

自动选择从' A1'开始的连续填充单元格范围。并且一直向下......直到找到空单元格。

Range('A1').table.value;

也可以使用以下方法选择行或列:

Range('A1').vertical.value;
Range('A1').horizontal.value;

创建范围对象的其他方法(来自api doc enter link description here

Range('A1')          Range('Sheet1', 'A1')          Range(1, 'A1')
Range('A1:C3')       Range('Sheet1', 'A1:C3')       Range(1, 'A1:C3')
Range((1,2))         Range('Sheet1, (1,2))          Range(1, (1,2))
Range((1,1), (3,3))  Range('Sheet1', (1,1), (3,3))  Range(1, (1,1), (3,3))
Range('NamedRange')  Range('Sheet1', 'NamedRange')  Range(1, 'NamedRange')