将 Python 列表变量复制到现有的 xlsx excel 文件中



我是Python的新手,所以请原谅我的无知。我已经使用 openpyxl 和 pandas 尝试了几种不同的代码,但是无法获得任何工作。

我需要的是复制 Python 中现有列表变量的文本(这是一个文件路径数组(,并将其粘贴到给定单元格的现有 xlsx 工作表中。

例如,给定 Python 中的列表变量 ["苹果"、"橙子"、"葡萄"],我需要工作表 1 的单元格 A2、A3 和 A4 来读取相同的内容。 任何帮助都非常感谢!

import pandas as pd
import os
folder = "C:\Users\user\Documents\temp"
x = []
for path in os.listdir(folder):
if path.endswith(".png"):
full_path = os.path.join(folder, path)
x.append(full_path)
fn = r"C:\Users\user\Documents\test.xlsx"
df = pd.read_excel(fn, header = None)
df2 = pd.DataFrame(x)
writer = pd.ExcelWriter(fn)
df2.to_excel(writer, startcol=0, startrow=1, header=None, index=False)
writer.save()

这给我的是正确的信息,但似乎覆盖了任何现有数据。 所有其他单元格内容和工作表现在都消失了,新添加的数据位于空白的 Sheet1 中。我需要按原样维护现有的电子表格,并且仅从给定工作表上的给定单元格开始添加此信息。

还尝试了以下xlwings,它将正确的数据导入现有工作表,同时保留所有其他数据,但用0替换第一个单元格。如何从数据帧中删除这个额外的 0?

filename = "C:\Users\user\Documents\test.xlsx"
df = pd.DataFrame(x)
wb = xw.Book(filename)
ws = wb.sheets('Sheet1')
ws.range('A2').options(index=False).value = df
wb = xw.Book(filename)

编辑:如果我将数据帧替换为系列,上面的xlwings代码似乎可以工作。 溶液:

import xlwings as xw
filename = "C:\Users\user\Documents\test.xlsx"
df = pd.Series(x)
wb = xw.Book(filename)
ws = wb.sheets('Sheet1')
ws.range('A2').options(index=False).value = df
wb = xw.Book(filename)

我需要按原样维护现有的电子表格

在追加模式下打开 excel 文件,例如看看这个答案(同一线程中的其他答案也很有用(。

如果你想通过索引来引用excel工作表,例如("A1"(,你可以使用openpyxl

from openpyxl import load_workbook
workbook = load_workbook(filename="sample.xlsx")
ll = ["apple", "orange", "grape"]
sheet = workbook.active
sheet["A2"] = ll[0]
sheet["A3"] = ll[1] 
sheet["A4"] = ll[2]
workbook.save(filename="sample.xlsx")

猜猜这解决了你的问题

根据数据的格式设置方式,如果您满意附加到工作表中的下一个空列,这可能会起作用。有了这个附带条件,pandas库非常适合处理表格数据,并且可以处理 Excel 文件(使用openpyxl库(。

看起来你已经安装了pandas,但是,为了其他人阅读的利益,请确保你已经安装了pandas和openpyxl:

pip install pandas openpyxl

然后尝试:

import pandas as pd
df = pd.read_excel('filename.xlsx')
df['new_column_name'] = listname
df.to_excel('output_spreadsheet.xlsx')

我个人认为这比直接使用 openpyxl 更具可读性。

最新更新