如何在Excel中使用Spreadsheetgear添加数据validation的单元格 – C#.NET

我想添加一个Excel中的单元格的数据validation,只允许数字值。

我的代码做了以下,

SpreadSheetGearHelper hlpr = new SpreadSheetGearHelper(excelFilePath); cells = workbook.Worksheets[0].Cells; hlpr.WorkSheet(0).Cells[string.Format("{0}:{0}", colName)].Validation.Add(SpreadsheetGear.ValidationType.WholeNumber, ValidationAlertStyle.Stop, ValidationOperator.Between, "-9999999", "9999999"); hlpr.WorkSheet(0).Cells[string.Format("{0}:{0}", colName)].NumberFormat = "@"; hlpr.WorkSheet(0).Cells[string.Format("{0}:{0}", colName)].Validation.ErrorMessage = "Please enter a number"; 

但是当我在excel范围内input有效的数字时,仍然会显示“请input一个数字”。

有人可以帮助我这个

您目前正在使用ValidationType .WholeNumber,它将只允许整数,如1,2,3,而不是小数,如1.23。 如果您需要允许所有的数字值而不只是整数,您需要指定ValidationType .Decimal。 例:

 using SpreadsheetGear; ... IWorkbook workbook = Factory.GetWorkbook(); IWorksheet worksheet = workbook.ActiveWorksheet; IRange cells = worksheet.Cells; cells["A1"].Validation.Add(ValidationType.Decimal, ValidationAlertStyle.Stop, ValidationOperator.Between, "-9999999", "9999999"); 

看看这个: Apply-Data-Validation-to-Excel-Cells-in-Csharp-CodeProject

  sheet.Range["C9"].DataValidation.AllowType = CellDataType.Decimal; sheet.Range["C9"].DataValidation.Formula1 = "-9999999"; sheet.Range["C9"].DataValidation.Formula2 = "9999999"; sheet.Range["C9"].DataValidation.CompareOperator = ValidationComparisonOperator.Between; sheet.Range["C9"].DataValidation.InputMessage = "Type a number between -9999999-9999999 in this cell."; 

我不熟悉SpreadsheetGear,但本文中的解决scheme在我身边很好。

修复。

单元格的数字格式设置为文本,这就是为什么每次input数字时都会给我一个错误(即使数据validation设置正确)。 因此,我添加了下面的代码行将其更改为“常规”

 hlpr.WorkSheet(0).Cells[string.Format("{0}:{0}", colName)].NumberFormat = "General"; 

谢谢你们的时间和回应。