在 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 天的试用许可证。