我必须将数据更新/附加到现有的xlsx文件中。
xlsx文件包含多个工作表。 例如,我想将一些数据附加到现有的工作表'Sheet1',如何做到这一点
答案 0 :(得分:6)
要将新行数据附加到现有电子表格,您可以使用openpyxl
模块。这将:
ws.get_highest_row()
例如:
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')