如何在Excel中创建自动完成?

时间:2017-10-17 11:09:11

标签: c# excel

在我的应用程序中,需要创建一个应具有自动完成功能的excel文件。假设我从数据库中获取一些值“Data 1”,“Data 2”,在获取之后我想将这些值绑定到excel的特定列。因此,当用户输入内容时,它会提示“数据1”,“数据2”......

如何实现这一目标?需要帮助

1 个答案:

答案 0 :(得分:0)

您正在描述一项名为数据验证的功能。它的主要目的是将单元格的可能值限制在一定范围内,但正如您所发现的那样,这有一个方便的副作用,即Excel显示可用值的下拉。

您可以使用各种openXML库来执行此类操作,这些库允许您在.NET代码中创建.xlsx文件。我喜欢EPPlus可以让你做这样的事情:

static void Main(string[] args)
{
    var fInfo = new FileInfo("output.xlsx");
    using (var excel = new ExcelPackage())
    {
        var sht1 = excel.Workbook.Worksheets.Add("DataSheet1");
        sht1.Cells[1,1].Value = "Occupation:";
        var validation = sht1.DataValidations.AddListValidation("A2");
        foreach(var allowedValue in GetAllowedValues())
        {
            validation.Formula.Values.Add(allowedValue);
        }
        excel.SaveAs(fInfo);
    }
}

private static IEnumerable<string> GetAllowedValues()
{
    return new string []{"Doctor","Baker","Candlestick Maker"};
} 

这会给出您所指的下拉列表(我的screengrab来自LibreOffice,但您会在Excel中看到相同的效果):

enter image description here