C++ में स्प्रेडशीट में डेटा वैलिडेशन कैसे जोड़ें

C++ में स्प्रेडशीट में डेटा वैलिडेशन कैसे जोड़ें

Aspose.Cells FOSS for C++ सेल-स्तरीय डेटा वैलिडेशन नियमों का समर्थन करता है जो यह निर्धारित करते हैं कि उपयोगकर्ता विशिष्ट कोशिकाओं या रेंज में कौन से मान दर्ज कर सकते हैं। Validation, ValidationCollection, और WorkbookValidator क्लासेज वैलिडेशन API बनाते हैं।

चरण-दर-चरण गाइड

चरण 1: बिल्ड सेट अप करें

cmake_minimum_required(VERSION 3.15)
project(DataValidation CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(DataValidation main.cpp)
target_link_libraries(DataValidation PRIVATE Aspose.Cells.Foss.Cpp)

चरण 2: आवश्यक हेडर्स शामिल करें

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/ValidationCollection.h"
#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"

using namespace Aspose::Cells_FOSS;

चरण 3: वैलिडेशन कलेक्शन तक पहुँचें

वर्कशीट से ValidationCollection प्राप्त करें:

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    ValidationCollection& validations = sheet.GetValidations();
    return 0;
}

चरण 4: एक मान्यकरण नियम जोड़ें

कॉल ValidationCollection::Add() और लौटाए गए Validation ऑब्जेक्ट को कॉन्फ़िगर करें:

int idx = validations.Add();
Validation& v = validations[idx];

v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInputTitle("Enter Quantity");
v.SetInputMessage("Enter a whole number between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value must be between 1 and 100.");
v.SetShowInput(true);
v.SetShowError(true);
v.SetAlertStyle(ValidationAlertType::Stop);

चरण 5: नियम को एक रेंज पर लागू करें

वैलिडेशन को CellArea से Validation::AddArea का उपयोग करके संलग्न करें:

CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);

चरण 6: वर्कबुक को सहेजें

workbook.Save("validated.xlsx");
workbook.Dispose();

चरण 7: प्री-सेव वैलिडेशन चलाएँ (वैकल्पिक)

विकास के दौरान WorkbookValidator::ValidateForSave को कॉल करें ताकि सहेजने से पहले मॉडल समस्याओं को पकड़ा जा सके:

WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");

सामान्य मुद्दे और समाधान

सहेजी गई फ़ाइल में वैधता दिखाई नहीं देती Ensure Validation::AddArea(area) नियम को कॉन्फ़िगर करने के बाद इसे कॉल किया जाता है। बिना संबंधित क्षेत्र वाले नियम को सीरियलाइज़ नहीं किया जाता।

ड्रॉप-डाउन सूची नहीं दिख रही है सेट v.SetInCellDropDown(true) और सेट v.SetType(ValidationType::List) with SetFormula1 एक रेंज या कॉमा-सेपरेटेड मानों की ओर इशारा कर रहा है।

ओवरलैपिंग वैधता क्षेत्रों उपयोग करें ValidationCollection::AreasOverlap नए नियम को जोड़ने से पहले संघर्षों की जाँच करने के लिए। ओवरलैपिंग नियम Excel में अप्रत्याशित व्यवहार उत्पन्न कर सकते हैं।

इनपुट संदेश प्रदर्शित नहीं हो रहा है सुनिश्चित करें कि दोनों SetShowInput(true) and SetInputMessage("...") सेट हैं। एक खाली संदेश स्ट्रिंग इनपुट प्रॉम्प्ट को दबा देती है भले ही SetShowInput(true) को कॉल किया जाता है।

ValidateForSave त्रुटियों की रिपोर्ट करता है रिपोर्ट की गई असंगति की समीक्षा करें। सामान्य कारणों में रेंज-प्रकार वैधताओं के लिए फ़ॉर्मूला सीमाओं का अभाव और अमान्य सेल क्षेत्र निर्देशांक शामिल हैं।

अक्सर पूछे जाने वाले प्रश्न

कौन से सत्यापन प्रकार समर्थित हैं?

The ValidationType enumeration includes: WholeNumber, Decimal, List, Date, TextLength, Custom, और Any.

क्या मैं रेंज से वैलिडेशन नियम हटा सकता हूँ?

हाँ। ValidationCollection::RemoveArea(area) का उपयोग करके रेंज से नियम हटाएँ, या एकल सेल के लिए RemoveACell(row, col) का उपयोग करें।

क्या मैं एक ही वैलिडेशन नियम को कई रेंजों पर लागू कर सकता हूँ?

हाँ। अतिरिक्त रेंजों पर लागू करने के लिए समान Validation ऑब्जेक्ट पर Validation::AddArea(area) को कई बार कॉल करें।

कौन-से अलर्ट शैलियाँ उपलब्ध हैं?

ValidationAlertType में शामिल हैं: Stop (अवैध प्रविष्टि को ब्लॉक करता है), Warning (चेतावनी देता है लेकिन प्रविष्टि की अनुमति देता है), और Information (केवल सूचना टूलटिप)।

क्या वैलिडेशन रनटाइम पर काम करता है, या केवल Excel में?

डेटा वैलिडेशन नियम XLSX फ़ाइल में संग्रहीत होते हैं और Excel या किसी संगत रीडर द्वारा लागू किए जाते हैं। लाइब्रेरी प्रोग्रामेटिक रूप से मान सेट होने पर रनटाइम में वैलिडेशन प्रतिबंधों का मूल्यांकन नहीं करती।

यह भी देखें

 हिन्दी