繁体   English   中英

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

[英]How to write data into existing '.xlsx' file which has multiple sheets

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

xlsx 文件包含多个工作表。 例如,我想将一些数据附加到现有工作表“Sheet1”中,如何执行此操作

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

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

例如:

import openpyxl

file = 'input.xlsx'
new_row = ['data1', 'data2', 'data3', 'data4']

wb = openpyxl.load_workbook(filename=file)
ws = wb['Sheet1']     # Older method was  .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,但在支持级别方面确实有一些限制。

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

您需要的一切都在快速入门教程中 这样的事情应该是你想要的。

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM