为现有Excel文件的打印页面添加页眉/页脚,并且不通过Python更改数据

问题描述 投票:0回答:1

我正在为现有 Excel 文件的所有工作表添加打印标题标题。我编写代码如下,但它创建新工作表并且所有数据都将丢失。如何为现有 Excel 文件的打印页面添加页眉/页脚并且不更改数据? 多谢!抱歉,我是一个新人,我发现了很多,但只是找到 set_header() 来添加标题,但不是我的期望!

导入 xlsxwriter 将 pandas 导入为 pd 导入全局 导入操作系统

def addExcelFile(locationPath, textAdd):

for file in glob.glob(locationPath + '\\**\\*.xlsx', recursive=True):        
    errorFile = os.path.basename(file).split('/')[-1]
    print(errorFile[0:2])
    if (errorFile[0:2] != '~$'):
        print(file)
        xl = pd.ExcelFile(file, engine='openpyxl')

        # Open a Pandas Excel writer using XlsxWriter as the engine.
        writer = pd.ExcelWriter(file, engine='xlsxwriter')
        # Get the xlsxwriter workbook and worksheet objects.
        workbook  = writer.book
        listSheet = xl.sheet_names
        print(len(listSheet))
        # see all sheet names
        if(textAdd == 'LGE Confidential'):
            for i in range (0,len(listSheet)):
                nameSheet = listSheet[i]
                writer.sheets={nameSheet:workbook.add_worksheet()}
                worksheet = writer.sheets[nameSheet]
                # Set color for text :https://learn.microsoft.com/en-us/dotnet/api/system.windows.media.colors?view=windowsdesktop-7.0 
                # replace char FF -> K in start color code 
                worksheet.set_header('&C&"Tahoma,Bold"&14&Kff0000' + textAdd)

        elif(textAdd == 'LGE Internal Use Only'):
            for i in range (0,len(listSheet)):
                nameSheet = listSheet[i]
                writer.sheets={nameSheet:workbook.add_worksheet()}
                worksheet = writer.sheets[nameSheet]
                # Set color for text :https://learn.microsoft.com/en-us/dotnet/api/system.windows.media.colors?view=windowsdesktop-7.0 
                # replace char FF -> K in start color code 
                worksheet.set_header('&C&"Tahoma,Bold"&14&Ka9a9a9' + textAdd)

        # Close the Pandas Excel writer and output the Excel file.
        writer.save()
        xl.close()
    else:
        print('File error: ', file, '.It will not be add header!')

为现有 Excel 文件的打印页面添加页眉/页脚,并且不更改数据

python excel header
1个回答
0
投票

您所做的似乎超出了您所需的结果。
您只想将标题添加到工作簿中的工作表中。无需使用 Pandas 和 Xlwriters,只需使用 Openpyxl 并更新每个工作表即可。
您的代码也有重复。如果同一代码段可用于多个应用程序,则应尽量避免重复代码。

if(textAdd == 'LGE Confidential'):
等部分不必要地重复了大约 4 行。
据我所知,以下代码示例应该可以满足您的需要

import openpyxl
import glob
import os


def addExcelFile(locationPath, textAdd):
    for file in glob.glob(locationPath + '\\**\\*.xlsx', recursive=True):
        errorFile = os.path.basename(file).split('/')[-1]
        print(errorFile[0:2])
        if errorFile[0:2] != '~$':
            print(file)

            wb = openpyxl.load_workbook(file)

            fmat = 'a9a9a9'
            if textAdd == 'LGE Confidential':
                fmat = 'ff0000'

            headertext = '&C&"Tahoma,Bold"&14&K' + fmat + textAdd

            for sheet in wb.worksheets:
                sheet.firstHeader.center.text = headertext
                sheet.oddHeader.center.text = headertext
                sheet.evenHeader.center.text = headertext

        wb.save(file)


lp = 'xlfiles'
# ta = 'LGE Confidential'
ta = 'LGE Internal Use Only'
© www.soinside.com 2019 - 2024. All rights reserved.