我正在编写一些代码来整理大量数据,这些数据将导出到Excel中供用户使用。其中一小部分涉及从现有电子表格中引入客户帐户名和有关它们的某些信息。例如:
Acc_no Name Product Notes
1234 Bush, George Large New customer
5678 Obama, Barack Medium
1357 Clinton, Bill Large At risk
2468 Carter, Jimmy Small May upgrade
在我要从中导入的电子表格中,用户可能出于自身目的突出显示了某些单元格(例如,作为后续示例)。我真的希望能够保留这种格式。
只要帐户顺序没有任何变化,并且如果我将数据导出回同一Excel工作表(使用OpenPyXL),则格式将保留。但是我希望在数据处理过程中帐户的顺序会发生变化。在这种情况下,格式会存在,但不会在正确的帐户上显示。
我的想法是在导入时以某种方式标记给定单元格的突出显示颜色,并将其存储为DataFrame中的变量。然后,当我将其导出回时,可以创建一个条件格式,该格式将保留该格式。
关于如何实现目标的任何想法或其他建议?我正在使用OpenPyXL,但是如果有更好的选择,我就不必使用。现在的代码如下。
from win32com.shell import shell, shellcon
import pandas as pd
import openpyxl
from openpyxl import load_workbook
import numpy as np
#Load position data from APX
filename = (shell.SHGetFolderPath(0, shellcon.CSIDL_PERSONAL, None, 0)) + '\Accounts.xlsx'
#Create account summary df
acc_df = pd.read_excel(filename, sheet_name = 'Acc_sum', converters={'Code':str})
#Do some munging that you don't care about...
acc_df = acc_df.dropna(subset=['Product'])
export_df = acc_df
book = load_workbook(filename)
sheet = 'Acc_sum'
writer = pd.ExcelWriter(filename, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
export_df.to_excel (writer, sheet, index=False)
writer.save()