我有一个名为template.xlsx
的*模板*excel文件,该文件包含多个工作表。我想将数据从单独的.csv
文件复制到template.xlsx
的第一个工作表(名为data
),并将新文件另存为**result.xlsx
,同时保留原始模板文件。
我要从template.xlsx
的data
**工作表中的第二行开始粘贴数据
这是我到目前为止开发的代码
import pandas as pd
from openpyxl.utils.dataframe import dataframe_to_rows
import openpyxl
from shutil import copyfile
template_file = 'template.xlsx' # Has a header in row 1 already which needs to be skipped while pasting data but it should be there in the output file
output_file = 'result.xlsx'
copyfile(template_file, output_file)
df = pd.read_csv('input_file.csv') #The file which is to be pasted in the template
wb = openpyxl.load_workbook(output_file)
ws = wb.get_sheet_by_name('data') #Getting the sheet named as 'data'
for r in dataframe_to_rows(df, index=False, header=False):
ws.append(r)
wb.save(output_file)
我无法获得所需的输出
模板文件(带有一个额外的行)位于左侧,输入文件(要复制到模板的数据)位于右侧,如下所示
第一次
1条答案
按热度按时间bttbmeg01#
实际上并不需要使用shutil模块,因为您可以使用openpyxl.load_workbook加载模板,然后用不同的名称保存。
此外,for循环中的
ws.append(r)
将附加到从template.xlsx中获取的现有数据,听起来您只想保留头部。我在下面提供了一个完全可重现的示例,它创建了“template.xlsx”用于演示目的。然后它加载“template.xlsx”并向其中添加新数据,并保存为result.xlsx。
预期输出: