Хобрук: Ваш путь к мастерству в программировании

Добавить выпадающий список (ddl) в excel с помощью библиотеки OpenXML

В настоящее время я использую библиотеку Interop для экспорта шаблонов excel пользователю, но клиент запросил переход на openxml, потому что он не требует установки excel на сервере.

используя взаимодействие, я могу добавить раскрывающийся список, используя взаимодействие в выделенной ячейке, как показано ниже.

worksheet.get_Range("A9", "A9").Value = "Region";
var Regions = _iFunctionalRepository.GetRegions(GetCurrentNeutralCultureId(), -1);
var RegionsArray = Regions.Select(x => x.Value + "- " + x.Text).ToArray();
var RegionsList = string.Join(",", RegionsArray);
//sectors ddl 
worksheet.get_Range("B9", "B9").Validation.Delete();
worksheet.get_Range("B9", "B9").Validation.Add(
    Microsoft.Office.Interop.Excel.XlDVType.xlValidateList,
    Microsoft.Office.Interop.Excel.XlDVAlertStyle.xlValidAlertInformation,
    Microsoft.Office.Interop.Excel.XlFormatConditionOperator.xlBetween,
    RegionsList,
    Type.Missing);
worksheet.get_Range("B9", "B9").Validation.IgnoreBlank = true;
worksheet.get_Range("B9", "B9").Validation.InCellDropdown = true;
worksheet.get_Range("B9", "B9").Value = "---";

мой код для экспорта с использованием открытого xml, для которого необходимо добавить раскрывающийся список в ячейку B9 в качестве примера

using (ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook())
{
    var worksheet = wb.Worksheets.Add("GeneralInformation");
    var worksheetHiddenSheet = wb.Worksheets.Add("generalHidden");

    worksheet.Range("A1", "A1").Value = "title";
    worksheet.Range("A1", "A1").Style.Font.SetFontSize(12);
    worksheet.Range("A1", "A1").Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
    worksheet.Range("A2", "A1").Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.DodgerBlue;
    worksheet.Range("A1", "A1").Style.Font.SetBold();
    worksheet.Range("A1", "B1").Merge();


    worksheet.Range("A9", "A9").Value = "regions";
    var Regions = _iFunctionalRepository.GetRegions(GetCurrentNeutralCultureId(), -1);
    var RegionsArray = Regions.Select(x => x.Value + "- " + x.Text).ToArray();
    var RegionsList = string.Join(",", RegionsArray);

    //drop down code 
     

    string randomFileName = "Project Template " + DateTime.Now.ToString("dd-MM-yyyy HH.mm.ss") + ".xlsx";
    //string randomFileName = Guid.NewGuid() + ".xlsx";
    string FilePath = Server.MapPath("~/PDFReports/") + randomFileName;
    //Here saving the file in xlsx
    wb.SaveAs(FilePath);
    wb.Save();

    byte[] filedata = System.IO.File.ReadAllBytes(FilePath);
    string contentType = MimeMapping.GetMimeMapping(FilePath);

    var cd = new System.Net.Mime.ContentDisposition
    {
        FileName = randomFileName,
        Inline = true,
    };
    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(filedata, contentType);
}

пожалуйста, помогите в добавлении выпадающих списков в мой файл excel


Ответы:


1

после поиска я нашел это решение, чтобы добавить раскрывающийся список в ячейки excel из предопределенного списка

var Regions = _dbContext.GetRegions(GetCurrentNeutralCultureId(), -1);
var RegionsfromDb = Regions.Select(x => x.Value + "- " + x.Text).ToList(); //extract needed data
var RegionsList = $"\"{String.Join(",", RegionsfromDb)}\""; //seperate items by comma
worksheet.Cell("B9").DataValidation.IgnoreBlanks = true;
worksheet.Cell("B9").DataValidation.InCellDropdown = true;
worksheet.Cell("B9").Value = "---";
worksheet.Cell("B9").DataValidation.List(RegionsList, true);
09.07.2020
Новые материалы

Деревья классификации и регрессии
Это мой второй пост об алгоритмах машинного обучения. Мой первый пост посвящен искусственным нейронным сетям, вы можете найти его ниже. Нейронные сети — базовое..

HMTL - Многозадачное обучение для решения задач НЛП
Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..