当我尝试合并 Excel 文件时,空格和颜色无法正确合并。我上传的Excel文件中的格式是相同的标题等。只是数值不同。但是创建的excel文件是嵌套的或者不完整的。
如果我尝试组合的 Excel 文件中的数值位置匹配,我希望收集并打印结果。如果没有与其他excel文件匹配的数据,则应按原样写入。但格式必须相同。我对Exceljs库了解不多,到目前为止我只导出了json数据。
要合并格式相同但数值不同的Excel文件,并确保空格、颜色等格式正确保留,可以使用Python中的
pandas
库。以下是实现此目标的分步指南:
这是一个完整的示例:
首先,确保安装了必要的库。如果您还没有安装它们,您可以使用 pip 安装它们:
pip install pandas openpyxl
import pandas as pd
import openpyxl
# Function to read Excel files
def read_excel(file_path):
return pd.read_excel(file_path, engine='openpyxl')
# Read the Excel files
file1 = 'path_to_your_first_excel_file.xlsx'
file2 = 'path_to_your_second_excel_file.xlsx'
df1 = read_excel(file1)
df2 = read_excel(file2)
# Merge the DataFrames, summing numeric columns where necessary
merged_df = df1.combine_first(df2).fillna(0)
numeric_columns = merged_df.select_dtypes(include='number').columns
merged_df[numeric_columns] = df1[numeric_columns].add(df2[numeric_columns], fill_value=0)
# Display the merged DataFrame
print(merged_df)
要保留格式,我们需要使用
openpyxl
库。
# Function to write DataFrame to Excel while preserving formats
def write_to_excel_with_formatting(df, template_file, output_file):
# Load the template Excel file
wb = openpyxl.load_workbook(template_file)
ws = wb.active
# Write DataFrame to the worksheet, keeping the formatting
for r_idx, row in df.iterrows():
for c_idx, value in enumerate(row):
cell = ws.cell(row=r_idx+2, column=c_idx+1, value=value) # +2 to account for header
# Optionally, you can apply formatting to the cell here
# Save the new Excel file
wb.save(output_file)
# Specify the template file and output file
template_file = 'path_to_your_template_excel_file.xlsx'
output_file = 'path_to_your_output_excel_file.xlsx'
# Write the merged DataFrame to Excel, preserving formatting
write_to_excel_with_formatting(merged_df, template_file, output_file)
read_excel
函数将 Excel 文件加载到 pandas DataFrames 中。combine_first
方法合并两个 DataFrame,填充第二个 DataFrame 中的缺失值。使用 add
方法对数值进行求和。write_to_excel_with_formatting
函数加载具有所需格式的 Excel 模板文件,并将合并的 DataFrame 写入该文件,同时保留原始格式。