簡體   English   中英

使用 OpenXML 庫在 excel 中添加下拉列表 (ddl)

[英]Add drop down list (ddl) in excel using OpenXML library

我目前使用 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 文件中

搜索后,我發現此解決方案可從預定義列表中將下拉列表添加到 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM