excel 中的数据验证控制可以将哪些类型的信息输入到单元格中。使用它,您可以仅将特定的数据类型(如数字或日期)限制在单元格中,或者将数字限制在特定范围内,并将文本限制在特定长度内。此外,它还允许您在下拉菜单中显示预定义值的列表,供用户选择。在本文中,您将学习如何使用 spire.xls for c 在 excel 中应用或删除数据验证。
安装 spire.xls for c
有两种方法可以将 spire.xls for c 集成到您的应用程序中。一种方法是通过 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 nuget 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
将数据验证应用于 excel 单元格
spire.xls for c 允许您为数字、日期、文本值、列表等创建验证规则。以下是将不同数据验证类型应用于 excel 中指定单元格的步骤。
- 创建 workbook 对象。
- 使用 workbook->getworksheets()->get() 方法获取指定的工作表。
- 使用 worksheet->getrange() 方法获取特定单元格。
- 使用 cellrange->getdatavalidation()->setallowtype() 方法设置单元格中允许的数据类型。您可以选择不同的数据类型,如十进制、时间、日期、文本长度和整数。
- 使用 cellrange->getdatavalidation()->setcompareoperator() 方法设置比较运算符。比较运算符包括 between(介于)、notbetween(未介于)、less(小于)、greater(大于)和 equal(等于)。
- 使用 cellrange->getdatavalidation()->setformula1() 和 cellrange->getdatavalidation()->setformula2() 方法为数据验证设置一个或两个公式。
- 使用 cellrange->getdatavalidation()->setinputmessage() 方法设置输入提示。
- 使用 cellrange->getdatavalidation()->seterrormessage() 方法设置错误消息。
- 设置为显示错误警告,并在输入无效数据时设置其警告样式。
- 使用 workbook->savetofile() 方法保存结果文档。
- c
#include "spire.xls.o.h";
using namespace spire::xls;
int main() {
//指定输出文件
std::wstring outputfile = l"数据验证.xlsx";
//创建workbook对象
intrusive_ptr workbook = new workbook();
//获取指定的工作表
intrusive_ptr sheet = dynamic_pointer_cast(workbook->getworksheets()->get(0));
//在指定的单元格中插入文本
dynamic_pointer_cast(sheet->getrange(l"b2"))->settext(l"编号验证: ");
dynamic_pointer_cast(sheet->getrange(l"b4"))->settext(l"日期验证: ");
dynamic_pointer_cast(sheet->getrange(l"b6"))->settext(l"文本长度验证: ");
dynamic_pointer_cast(sheet->getrange(l"b8"))->settext(l"列表验证: ");
dynamic_pointer_cast(sheet->getrange(l"b10"))->settext(l"时间验证: ");
//将数字验证添加到c2
intrusive_ptr rangenumber = dynamic_pointer_cast(sheet->getrange(l"c2"));
rangenumber->getdatavalidation()->setallowtype(celldatatype::decimal);
rangenumber->getdatavalidation()->setcompareoperator(validationcomparisonoperator::between);
rangenumber->getdatavalidation()->setformula1(l"3");
rangenumber->getdatavalidation()->setformula2(l"6");
rangenumber->getdatavalidation()->setinputmessage(l"输入一个介于1和10之间的数字");
rangenumber->getdatavalidation()->seterrormessage(l"请输入正确的数字!");
rangenumber->getdatavalidation()->setshowerror(true);
rangenumber->getdatavalidation()->setalertstyle(alertstyletype::warning);
rangenumber->getstyle()->setknowncolor(excelcolors::gray25percent);
//将日期验证添加到c4
intrusive_ptr rangedate = dynamic_pointer_cast(sheet->getrange(l"c4"));
rangedate->getdatavalidation()->setallowtype(celldatatype::date);
rangedate->getdatavalidation()->setcompareoperator(validationcomparisonoperator::between);
rangedate->getdatavalidation()->setformula1(l"1/1/2021");
rangedate->getdatavalidation()->setformula2(l"12/31/2021");
rangedate->getdatavalidation()->setinputmessage(l"输入2021年1月1日至2021年12月31日之间的日期");
rangedate->getstyle()->setknowncolor(excelcolors::gray25percent);
//将文本长度验证添加到c6
intrusive_ptr rangetextlength = dynamic_pointer_cast(sheet->getrange(l"c6"));
rangetextlength->getdatavalidation()->setallowtype(celldatatype::textlength);
rangetextlength->getdatavalidation()->setcompareoperator(validationcomparisonoperator::lessorequal);
rangetextlength->getdatavalidation()->setformula1(l"5");
rangetextlength->getdatavalidation()->seterrormessage(l"请输入有效字符串!");
rangetextlength->getdatavalidation()->setshowerror(true);
rangetextlength->getdatavalidation()->setalertstyle(alertstyletype::stop);
rangetextlength->getstyle()->setknowncolor(excelcolors::gray25percent);
//对c8应用列表验证
intrusive_ptr rangelist = dynamic_pointer_cast(sheet->getrange(l"c8"));
std::vector files = { l"美国", l"加拿大", l"英国" };
rangelist->getdatavalidation()->setvalues(files);
rangelist->getdatavalidation()->setissuppressdropdownarrow(false);
rangelist->getdatavalidation()->setinputmessage(l"从列表中选择一个项目");
rangelist->getstyle()->setknowncolor(excelcolors::gray25percent);
//对c10应用时间验证
intrusive_ptr rangetime = dynamic_pointer_cast(sheet->getrange(l"c10"));
rangetime->getdatavalidation()->setallowtype(celldatatype::time);
rangetime->getdatavalidation()->setcompareoperator(validationcomparisonoperator::between);
rangetime->getdatavalidation()->setformula1(l"9:00");
rangetime->getdatavalidation()->setformula2(l"12:00");
rangetime->getdatavalidation()->setinputmessage(l"输入一个介于9:00和12:00之间的时间");
rangetime->getstyle()->setknowncolor(excelcolors::gray25percent);
//自动调整列2的宽度
sheet->autofitcolumn(2);
//设置列3的宽度
sheet->getcolumns()->getitem(2)->setcolumnwidth(20);
//保存结果文档
workbook->savetofile(outputfile.c_str(), excelversion::version2016);
workbook->dispose();
}
从 excel 单元格中删除数据验证
要删除应用于单元格的数据验证,spire.xls for c 提供了 worksheet->getdvtable()->remove() 方法。详细步骤如下。
- 创建 workbook 对象。
- 使用 workbook->loadfromfile() 方法加载包含数据验证的示例 excel 文档。
- 使用 workbook->getworksheets()->get() 方法获取指定的工作表。
- 创建一个矩形数组,用于定位将删除验证的单元格。
- 使用 worksheet->getdvtable()->remove() 方法从所选单元格中删除数据验证。
- 使用 workbook->savetofile() 方法保存结果文档。
- c
#include "spire.xls.o.h";
using namespace spire::xls;
int main() {
//指定输入和输出文件
std::wstring inputfile = l"数据验证.xlsx";
std::wstring outputfile = l"删除数据验证.xlsx";
//创建workbook对象
intrusive_ptr workbook = new workbook();
//加载excel文档示例
workbook->loadfromfile(inputfile.c_str());
//获取指定的工作表
intrusive_ptr sheet = dynamic_pointer_cast(workbook->getworksheets()->get(0));
//创建一个矩形数组,用于定位工作表中的区域
std::vector> rectangles(1);
//为数组的第一个元素赋值,并指定矩形单元格范围
rectangles[0] = spire::common::rectangle::fromltrb(0, 0, 2, 9);
//删除由矩形表示的范围内的验证
sheet->getdvtable()->remove(rectangles);
//保存结果文档
workbook->savetofile(outputfile.c_str(), excelversion::version2016);
workbook->dispose();
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。