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

标签 python python-3.x pandas openpyxl xlsx

我是Python新手,所以请原谅我的无知。我已经使用 openpyxl 和 pandas 尝试了几种不同的代码,但是没有任何效果。

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

例如,给定 Python 中的列表变量 [“apple”、“orange”、“grape”],我需要工作表 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)

编辑:如果我用 Series 替换 DataFrame,上面的 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)

最佳答案

I need to maintain the existing spreadsheet as-is

以追加模式打开 Excel 文件,take a look at this answer例如(同一线程中的其他答案也很有用)。

关于python - 将 Python 列表变量复制到现有 xlsx excel 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59463136/

相关文章:

image - Python 3 是否有图像处理模块?

Pandas :按不需要的列名子集数据框

python - 属性错误 : 'int' object has no attribute 'get'

python - numpy 数组内给定值的凸包 - python 2.7

python - 将字典值转换为具有特定顺序的字符串对象

python - 为什么我在 Python 中得到一个额外的条形图?

python - Pandas 减少 value_counts() 表格中分类变量的数量

python - 将 itertools.product 转换为列表时笛卡尔积内存错误

python3 linux - 检测没有root按下的键盘键

python - 如何使用 Format 在 Python 中连接字符串?