我是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 更具可读性。