Epplus - проверка, если именованный стиль уже существует, перед его добавлением - PullRequest
2 голосов
/ 27 февраля 2020

У меня есть класс 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;
}

У этого класса есть метод 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 программно проверить, существует ли определенный именованный стиль в электронной таблице, и удалить его, если он есть?

1 Ответ

0 голосов
/ 27 февраля 2020

Мне удалось заставить его работать, но я не уверен, что это лучшее решение. Он не удаляет их, а только добавляет, если находит стиль с существующим именем (не может гарантировать, что у него тот же стиль):

// 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...