DEV Community

Allen Yang
Allen Yang

Posted on

Adding Data Validation in Excel Using Python

Adding Data Validation in Excel Using Python

When working with spreadsheet data, ensuring the accuracy and consistency of input is crucial. The data validation feature allows developers to set rules that restrict what users can enter into cells, thereby preventing invalid data entry. This article demonstrates how to add various types of data validation rules to Excel worksheets using Python.

Why Data Validation Is Needed

Data validation serves multiple purposes in practical applications:

  • Ensure Data Quality: Restrict input ranges to avoid invalid data
  • Improve User Experience: Provide clear error messages and guidance
  • Simplify Data Processing: Reduce the workload for subsequent data cleaning
  • Automate Form Control: Create standardized data entry templates

Common validation scenarios include numeric range restrictions, date validity checks, text length controls, and more.

Environment Setup

First, install the Spire.XLS for Python library:

pip install Spire.XLS
Enter fullscreen mode Exit fullscreen mode

This library provides a complete API for Excel file operations, supporting the creation, modification, and formatting of Excel documents.

Basic Implementation Steps

The core process for adding data validation includes:

  1. Load or create an Excel workbook
  2. Get the target worksheet
  3. Specify the cell range where validation should be applied
  4. Configure validation rules (type, conditions, error messages)
  5. Save the file

The following examples demonstrate how to implement different types of data validation.

Adding Numeric Range Validation

Numeric validation is the most common validation type, restricting users to enter only numbers within a specific range. The following code demonstrates how to set up a decimal number validation between 3 and 6:

from spire.xls import *
from spire.xls.common import *

# Create workbook object
workbook = Workbook()
sheet = workbook.Worksheets[0]

# Add description label
sheet.Range["B11"].Text = "Enter a number (3-6):"

# Get target cell range
rangeNumber = sheet.Range["B12"]

# Set comparison operator to "Between"
rangeNumber.DataValidation.CompareOperator = ValidationComparisonOperator.Between

# Set minimum and maximum values
rangeNumber.DataValidation.Formula1 = "3"
rangeNumber.DataValidation.Formula2 = "6"

# Specify validation type as decimal
rangeNumber.DataValidation.AllowType = CellDataType.Decimal

# Set error message
rangeNumber.DataValidation.ErrorMessage = "Please enter a valid number."

# Enable error display
rangeNumber.DataValidation.ShowError = True

# Set cell background color to identify validation area
rangeNumber.Style.KnownColor = ExcelColors.Gray25Percent

# Auto-fit column width
sheet.AutoFitColumn(2)

# Save file
workbook.SaveToFile("NumericValidation.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
Enter fullscreen mode Exit fullscreen mode

Key API explanations:

  • CompareOperator: Defines the comparison method, such as Between, Greater, Less, etc.
  • Formula1 and Formula2: Set boundary values for validation conditions
  • AllowType: Specifies the data type, such as Decimal, Integer, etc.
  • ErrorMessage: Error message displayed when input is invalid
  • ShowError: Controls whether to display the error dialog box

Adding Date Validation

Date validation ensures that users enter dates within a valid range. This is particularly useful when handling schedules, deadlines, and similar scenarios:

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
sheet = workbook.Worksheets[0]

# Add description label
sheet.Range["B14"].Text = "Enter a date"

# Get target cell
rangeDate = sheet.Range["B15"]

# Set validation type to date
rangeDate.DataValidation.AllowType = CellDataType.Date

# Set comparison operator
rangeDate.DataValidation.CompareOperator = ValidationComparisonOperator.Between

# Set date range (January 1, 1970 to December 31, 1970)
rangeDate.DataValidation.Formula1 = "1/1/1970"
rangeDate.DataValidation.Formula2 = "12/31/1970"

# Set error message
rangeDate.DataValidation.ErrorMessage = "Please enter a valid date."

# Enable error display
rangeDate.DataValidation.ShowError = True

# Set warning style (optional: Stop, Warning, Information)
rangeDate.DataValidation.AlertStyle = AlertStyleType.Warning

# Set cell background color
rangeDate.Style.KnownColor = ExcelColors.Gray25Percent

sheet.AutoFitColumn(2)

workbook.SaveToFile("DateValidation.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
Enter fullscreen mode Exit fullscreen mode

Date formats can use various standard representations, such as "MM/DD/YYYY" or "YYYY-MM-DD". The AlertStyleType provides three error prompt styles:

  • Stop: Prevents users from entering invalid data
  • Warning: Warns but allows continuation
  • Information: Provides informational prompts only

Adding Text Length Validation

Text length validation controls the maximum or minimum number of characters in a string, suitable for fields like usernames, passwords, codes, etc.:

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
sheet = workbook.Worksheets[0]

# Add description label
sheet.Range["B17"].Text = "Enter text"

# Get target cell
rangeTextLength = sheet.Range["B18"]

# Set validation type to text length
rangeTextLength.DataValidation.AllowType = CellDataType.TextLength

# Set comparison operator to "LessOrEqual"
rangeTextLength.DataValidation.CompareOperator = ValidationComparisonOperator.LessOrEqual

# Set maximum length to 5 characters
rangeTextLength.DataValidation.Formula1 = "5"

# Set error message
rangeTextLength.DataValidation.ErrorMessage = "Please enter a valid string."

# Enable error display
rangeTextLength.DataValidation.ShowError = True

# Set stop style to strictly prevent invalid input
rangeTextLength.DataValidation.AlertStyle = AlertStyleType.Stop

# Set cell background color
rangeTextLength.Style.KnownColor = ExcelColors.Gray25Percent

sheet.AutoFitColumn(2)

workbook.SaveToFile("TextLengthValidation.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
Enter fullscreen mode Exit fullscreen mode

Text length validation supports various comparison operators:

  • LessOrEqual: Less than or equal to the specified length
  • GreaterOrEqual: Greater than or equal to the specified length
  • Between: Between two length values
  • Equal: Equal to the specified length

Comprehensive Example: Adding Multiple Validations in One File

In practical applications, it's common to apply multiple validation rules within the same worksheet. Here's a complete example integrating the three validation types mentioned above into one file:

from spire.xls import *
from spire.xls.common import *

# Create workbook
workbook = Workbook()
sheet = workbook.Worksheets[0]

# === Numeric Validation ===
sheet.Range["B11"].Text = "Enter a number (3-6):"
rangeNumber = sheet.Range["B12"]
rangeNumber.DataValidation.CompareOperator = ValidationComparisonOperator.Between
rangeNumber.DataValidation.Formula1 = "3"
rangeNumber.DataValidation.Formula2 = "6"
rangeNumber.DataValidation.AllowType = CellDataType.Decimal
rangeNumber.DataValidation.ErrorMessage = "Please enter a valid number."
rangeNumber.DataValidation.ShowError = True
rangeNumber.Style.KnownColor = ExcelColors.Gray25Percent

# === Date Validation ===
sheet.Range["B14"].Text = "Enter a date"
rangeDate = sheet.Range["B15"]
rangeDate.DataValidation.AllowType = CellDataType.Date
rangeDate.DataValidation.CompareOperator = ValidationComparisonOperator.Between
rangeDate.DataValidation.Formula1 = "1/1/1970"
rangeDate.DataValidation.Formula2 = "12/31/1970"
rangeDate.DataValidation.ErrorMessage = "Please enter a valid date."
rangeDate.DataValidation.ShowError = True
rangeDate.DataValidation.AlertStyle = AlertStyleType.Warning
rangeDate.Style.KnownColor = ExcelColors.Gray25Percent

# === Text Length Validation ===
sheet.Range["B17"].Text = "Enter text"
rangeTextLength = sheet.Range["B18"]
rangeTextLength.DataValidation.AllowType = CellDataType.TextLength
rangeTextLength.DataValidation.CompareOperator = ValidationComparisonOperator.LessOrEqual
rangeTextLength.DataValidation.Formula1 = "5"
rangeTextLength.DataValidation.ErrorMessage = "Please enter a valid string."
rangeTextLength.DataValidation.ShowError = True
rangeTextLength.DataValidation.AlertStyle = AlertStyleType.Stop
rangeTextLength.Style.KnownColor = ExcelColors.Gray25Percent

# Auto-fit column width
sheet.AutoFitColumn(2)

# Save file
workbook.SaveToFile("DataValidation.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
Enter fullscreen mode Exit fullscreen mode

Practical Tips

Custom Dropdown List Validation

In addition to the validation types mentioned above, dropdown lists can also be created for user selection:

# Create dropdown list validation
rangeList = sheet.Range["C5"]
rangeList.DataValidation.AllowType = CellDataType.List
rangeList.DataValidation.Formula1 = '"Option 1,Option 2,Option 3"'
rangeList.DataValidation.ShowDropDown = True
Enter fullscreen mode Exit fullscreen mode

Note: Dropdown list options need to be enclosed in double quotes and separated by commas.

Referencing Validation Data from Cell Ranges

Validation data can be dynamically read from other cell ranges:

# Read list data from range A1:A5
rangeDynamic = sheet.Range["D5"]
rangeDynamic.DataValidation.AllowType = CellDataType.List
rangeDynamic.DataValidation.Formula1 = "=A1:A5"
Enter fullscreen mode Exit fullscreen mode

This approach allows dynamic updates to validation options without modifying the code.

Clearing Data Validation

To remove existing validation rules:

# Clear validation for specified cells
rangeToClear.DataValidation.Clear()
Enter fullscreen mode Exit fullscreen mode

Summary

This article demonstrated how to add data validation in Excel using Python, including numeric range validation, date validation, and text length validation. By properly configuring the properties of the DataValidation object, flexible data input control can be achieved, improving spreadsheet data quality and user experience.

These techniques are particularly applicable to:

  • Creating standardized data entry templates
  • Building data collection forms
  • Implementing data quality control processes
  • Developing automated reporting systems

After mastering data validation techniques, they can be combined with other Excel operations (such as conditional formatting, formula calculations, etc.) to build more comprehensive automated office solutions.

Top comments (0)