使用C#代码在 Excel 文档中创建下拉列表

在 Excel 文档中创建下拉列表的目的是为数据输入提供一种方便的方式,限制用户只能从预定义的选项中进行选择。这有助于防止输入错误并确保数据的准确性。通过使用下拉列表,用户无需手动输入数据即可从固定的选项列表中进行选择,从而减少输入错误的可能性。本文将介绍如何在 C# 项目中使用 Spire.XLS for .NET 在 Excel 文档中创建下拉列表。

安装 Spire.XLS for .NET

首先,你需要将 Spire.XLS for .NET 包中包含的 DLL 文件添加为 .NET 项目的引用。这些 DLL 文件可以通过以下两种方式获取:从官方链接下载,或通过 NuGet 安装。

PM> Install-Package Spire.XLS

在 C# 中使用字符串数组创建下拉列表

借助 Spire.XLS,你可以轻松地在单元格中创建下拉列表,只需将字符串数组赋值给 CellRange.DataValidation.Values 属性即可。

完整示例代码如下:

using Spire.Xls;
namespace SpireXlsDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 Workbook 对象
            Workbook workbook = new Workbook();

            // 获取 Workbook 对象中的第一个工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 创建一个字符串数组
            string[] values = new string[] { "Apple", "Banana", "Orange", "Strawberry", "Grape" };

            // 工作表的 A1 单元格中设置数据验证,将可选值限制为 values 数组中的内容
            worksheet.Range["A1"].DataValidation.Values = values;

            // 将 Workbook 对象保存为 Excel 文件
            workbook.SaveToFile("DropdownListCreatedFromArray.xlsx", ExcelVersion.Version2016);

            // 释放 Workbook 对象占用的资源
            workbook.Dispose();
        }
    }
}

在 C# 中使用同一工作表中的数据创建下拉列表

以下示例演示了如何通过指定数据区域并将其应用到相应的单元格,在数据所在的同一工作表中创建下拉列表。

完整示例代码如下:

using Spire.Xls;
namespace SpireXlsDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的 Workbook 对象
            Workbook workbook = new Workbook();

            // 从文件中加载工作簿数据
            workbook.LoadFromFile("Sample1.xlsx");

            // 获取工作簿中的第一个工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 获取工作表中 A3 到 A8 的单元格区域
            CellRange dataRange = worksheet.Range["A3:A8"];

            // 将单元格 B1 设置为下拉列表,数据来源为之前获取的数据区域
            worksheet.Range["B1"].DataValidation.DataRange = dataRange;

            // 将工作簿保存为一个新文件
            workbook.SaveToFile("CreateDropdownInSameWorksheet.xlsx", ExcelVersion.Version2016);

            // 释放工作簿资源
            workbook.Dispose();
        }
    }
}

在 C# 中使用不同工作表中的数据创建下拉列表

此示例演示了如何在一个工作表中指定数据区域,并将其应用到另一个工作表中的指定单元格。在此过程中,需要确保将 Worksheet.ParentWorkbook.Allow3DRangesInDataValidation = true 设置为启用,以允许在不同工作表之间创建下拉列表。

完整示例代码如下:

using Spire.Xls;
namespace SpireXlsDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 Workbook 对象
            Workbook workbook = new Workbook();

            // 从文件中加载工作簿
            workbook.LoadFromFile("Sample2.xlsx");

            // 获取第一个工作表
            Worksheet worksheet1 = workbook.Worksheets[0];

            // 获取第二个工作表
            Worksheet worksheet2 = workbook.Worksheets[1];

            // 允许在数据验证中使用三维区域
            worksheet1.ParentWorkbook.Allow3DRangesInDataValidation = true;

            // 定义数据区域
            CellRange dataRange = worksheet2.Range["A1:A6"];

            // 将数据区域应用到工作表1的 B1 单元格作为数据验证
            worksheet1.Range["B1"].DataValidation.DataRange = dataRange;

            // 将工作簿保存到文件
            workbook.SaveToFile("Create the Dropdowns Across Different Worksheets.xlsx", ExcelVersion.Version2016);

            // 释放工作簿资源
            workbook.Dispose();
        }
    }
}

在 C# 中在同一工作表中创建联动下拉列表

联动下拉菜单是指根据另一个下拉菜单中的选择,自动更新当前下拉菜单中的选项。此示例演示如何在同一工作表中创建联动下拉列表功能。实现方法是添加一个 INameRange 对象并设置引用区域,同时设置数据验证的范围和公式,从而实现下拉列表的联动效果。

完整示例代码如下:

using Spire.Xls;
namespace SpireXlsDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的 Workbook 对象
            Workbook workbook = new Workbook();

            // 从文件中加载工作簿
            workbook.LoadFromFile("Sample3.xlsx");

            // 获取第一个工作表
            Worksheet worksheet1 = workbook.Worksheets[0];

            // 获取第二个工作表
            Worksheet worksheet2 = workbook.Worksheets[1];

            // 添加命名区域对象并设置引用区域
            Spire.Xls.Core.INamedRange namedRange = workbook.NameRanges.Add(worksheet2.Range["A1"].Text);
            namedRange.RefersToRange = worksheet2.Range["B2:B6"];
            namedRange = workbook.NameRanges.Add(worksheet2.Range["A2"].Text.Replace(" ", "_"));
            namedRange.RefersToRange = worksheet2.Range["C2:C6"];
            namedRange = workbook.NameRanges.Add(worksheet2.Range["A3"].Text);
            namedRange.RefersToRange = worksheet2.Range["D2:D6"];
            namedRange = workbook.NameRanges.Add(worksheet2.Range["A4"].Text);
            namedRange.RefersToRange = worksheet2.Range["E2:E6"];
            namedRange = workbook.NameRanges.Add(worksheet2.Range["A5"].Text);
            namedRange.RefersToRange = worksheet2.Range["F2:F6"];

            // 允许在数据验证中使用三维区域
            worksheet1.ParentWorkbook.Allow3DRangesInDataValidation = true;

            // 设置数据验证的数据区域
            worksheet1.Range["A2"].DataValidation.DataRange = worksheet2.Range["A1:A5"];
            worksheet1.Range["B2"].DataValidation.AllowType = CellDataType.User;

            // 设置公式
            worksheet1.Range["B2"].DataValidation.Formula1 = "=INDIRECT(SUBSTITUTE(A2,\" \",\"_\"))";

            // 将工作簿保存到文件
            workbook.SaveToFile("Linked Dropdowns in the Same Worksheet.xlsx", ExcelVersion.Version2016);

            // 释放工作簿资源
            workbook.Dispose();
        }
    }
}

在 C# 中在不同工作表之间创建联动下拉列表

此示例演示了如何在 Excel 文档的不同工作表之间实现联动下拉列表。通过添加 INamedRange 对象并设置引用区域,可以在第一个工作表中设置数据验证范围,并在第二个工作表中设置单元格公式,从而实现下拉列表的联动效果。

完整示例代码如下:

using Spire.Xls;
namespace SpireXlsDemo
{
    internal class Program
        {
            static void Main(string[] args)
                {
                    // 创建一个 Workbook 对象
                    Workbook workbook = new Workbook();

                    // 从文件中加载工作簿
                    workbook.LoadFromFile("Sample4.xlsx");

                    // 获取第一个工作表
                    Worksheet worksheet1 = workbook.Worksheets[0];

                    // 获取第二个工作表
                    Worksheet worksheet2 = workbook.Worksheets[1];

                    // 获取数据工作表
                    Worksheet dataSheet = workbook.Worksheets[2];

                    // 添加命名区域对象并设置引用区域
                    Spire.Xls.Core.INamedRange namedRange = workbook.NameRanges.Add(dataSheet.Range["A2"].Text);
                    namedRange.RefersToRange = dataSheet.Range["B2"];
                    namedRange = workbook.NameRanges.Add(dataSheet.Range["A3"].Text);
                    namedRange.RefersToRange = dataSheet.Range["B3"];
                    namedRange = workbook.NameRanges.Add(dataSheet.Range["A4"].Text);
                    namedRange.RefersToRange = dataSheet.Range["B4"];

                    // 允许在数据验证中使用三维区域
                    worksheet1.ParentWorkbook.Allow3DRangesInDataValidation = true;

                    // 设置数据验证的数据区域
                    worksheet1.Range["B1"].DataValidation.DataRange = dataSheet.Range["A2:A4"];

                    // 设置第二个工作表 B1 单元格的公式
                    worksheet2.Range["B1"].Formula = "=INDIRECT(" + worksheet1.Name + "!B1)";

                    // 将工作簿保存到文件
                    workbook.SaveToFile("Creating Linked Dropdowns Across Different Worksheets.xlsx", ExcelVersion.Version2016);

                    // 释放工作簿资源
                    workbook.Dispose();
                }
        }
}

申请临时许可证

如果你希望移除生成文档中的评估提示,或解除功能限制,请为自己申请一个 30 天的试用许可证。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容