Как установить проверку для раскрывающегося списка в Excel, используя c# Закрыто XML, используя метод List (список строк, Boolean inCellDropdown) - PullRequest
0 голосов
/ 19 февраля 2020

Привет, все. Я пытаюсь создать раскрывающийся список для столбца в Excel, используя библиотеку Closed XML. Я могу создать его успешно, используя приведенный ниже код.

      using (XLWorkbook wb = new XLWorkbook())
      {
        wb.Worksheets.Add(dt);
        wb.Worksheets.Add(dt2);
        var worksheet2 = wb.Worksheet(2);
        //wb.Worksheet(1).Column(11).SetDataValidation().List("one,two,three", true); This does not work fine
        wb.Worksheet(1).Column(11).SetDataValidation().List(worksheet2.Range("A2:A12"), true);// Works fine
        wb.Worksheet(1).Column(11).SetDataValidation().IgnoreBlanks = true;
        wb.Worksheet(1).Column(11).SetDataValidation().InCellDropdown = true;
        wb.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
        wb.Style.Font.Bold = true;
        wb.SaveAs(targetFile);
      }

Но я хочу сделать то же самое с другим перегруженным методом List в SetDataValidation (), но это создает Excel, но когда я пытаюсь чтобы открыть его, он говорит, что он испорчен. Не могли бы вы помочь мне понять, почему другой перегруженный метод не работает.

Рассматриваемый метод publi c void List (список строк, Boolean inCellDropdown) . В соответствии со страницей Проверка данных возможно использование списка строк:

//Pass a string in this format: "Option1,Option2,Option3"
var options = new List<string>{"Option1","Option2","Option3"};
var validOptions = $"\"{String.Join(",", options)}\"";
ws.Cell(1,1).DataValidation.List(validOptions, true);

1 Ответ

1 голос
/ 19 февраля 2020

Согласно вики-странице Проверка данных , список должен содержать двойные кавычки.

В примере do c:

var options = new List<string>{"Option1","Option2","Option3"};
var validOptions = $"\"{String.Join(",", options)}\"";
ws.Cell(1,1).DataValidation.List(validOptions, true);

validOptions содержит:

"Option1,Option2,Option3"`

Ваш собственный код должен измениться на:

.List("\"one,two,three\"", true);
...