Epplus - 在添加之前检查命名样式是否已经存在

Epplus - checking if named style already exists before adding it

我有一个 class Comparer,它定义了以下内容:

// partial Comparer code
public class Comparer
{
    private readonly Color colorWarning = Color.Red;
    private readonly string SPREADSHEET_RED_WARNING_STYLE = "red warning style";
    private OfficeOpenXml.Style.XmlAccess.ExcelNamedStyle redWarningStyle;
}

这个 class 有一个方法 prepareSpreadsheet:

private void prepareSpreadsheet()
{
    // spreadsheet styles
    redWarningStyle = spreadsheet.Workbook.Styles.CreateNamedStyle(SPREADSHEET_RED_WARNING_STYLE);
    redWarningStyle.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
    redWarningStyle.Style.Fill.BackgroundColor.SetColor(colorWarning);
    redWarningStyle.Style.Font.Color.SetColor(Color.Black)
}

如果电子表格文件已经包含这样的命名样式,则会抛出异常。 Epplus 能否以编程方式检查某个命名样式是否已存在于电子表格中,如果存在则将其删除?

我已经设法让它工作了,但不确定它是否是最好的解决方案。它不会删除它们,只会在找到具有现有名称的样式时添加(不能保证它具有相同的样式):

// retrieve a list of styles from the spreadsheet
List<OfficeOpenXml.Style.XmlAccess.ExcelNamedStyleXml> spreadsheetNamedStyles = spreadsheet.Workbook.Styles.NamedStyles.ToList();

// check if it already exists before attempting to add it
if (spreadsheetNamedStyles.FirstOrDefault(namedStyle => namedStyle.Name.Equals(SPREADSHEET_RED_WARNING_STYLE)) == null)
{
    redWarningStyle = spreadsheet.Workbook.Styles.CreateNamedStyle(SPREADSHEET_RED_WARNING_STYLE);
    redWarningStyle.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
    redWarningStyle.Style.Fill.BackgroundColor.SetColor(colorWarning);
    redWarningStyle.Style.Font.Color.SetColor(Color.Black);
}