apache-poi
NPOI: Podejście do sprawdzania poprawności danych dla daty, godziny, elementu listy, wiadomości e-mail itp. Dla pliku Excel XSSF (.xslx) przy użyciu c #
Szukaj…
Wprowadzenie
Utworzenie ograniczenia sprawdzania poprawności danych może być trudne i czasochłonne w NPOI. Podzieliłem się niektórymi z mojego praktycznego podejścia. Takie podejście da dobry pomysł na dostosowanie własnych typów ograniczeń.
Ustaw ograniczenia daty dla wartości pól daty między 01/01/1900 a 12/31/2119 z formatem daty mm / dd // rrrrr;
int DVRowLimit = (Int16.MaxValue);
CellRangeAddressList cellRangeFieldsType1 = new CellRangeAddressList(1, DVRowLimit, targetFirstCol, targetLastCol);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateDateConstraint(OperatorType.BETWEEN, "=DATE(1900,1,1)", "=DATE(2119,12,31)", "mm/dd/yyyyy");
//dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateDateConstraint(OperatorType.IGNORED, "", "", "m/d/yy h:mm");
XSSFDataValidation dataValidation = (XSSFDataValidation)validationHelper.CreateValidation(dvConstraint, cellRangeFieldsType1);
dataValidation.ShowErrorBox = true;
dataValidation.ErrorStyle = 0;
dataValidation.CreateErrorBox("InvalidDate", "Allowed Format is MM/DD/YYYY");
dataValidation.ShowErrorBox = true;
dataValidation.CreatePromptBox("Date Data Validation", "Enter Date in Format MM/DD/YYYY.");
dataValidation.ShowPromptBox = true;
sheet.AddValidationData(dataValidation);
Ustaw ograniczenia czasowe dla wartości pól między 00:00 a 23:59 za pomocą formatu daty GG: MM;
dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateTimeConstraint(OperatorType.BETWEEN, "=TIME(0,0,0)", "=TIME(23,59,59)");
Utwórz element listy Ograniczenie
dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateExplicitListConstraint(new string[] { "MON", "TUE" , "WED", "THU", "FRI"});
Ograniczenie numeru telefonu
// wypróbuj to samo podejście dla typów walut z formatem takim jak „$ #, ###. 00” i datą „m / d / rr h: mm”
XSSFFont defaultFont = (XSSFFont)workbook.CreateFont();
defaultFont.FontHeightInPoints = (short)10;
defaultFont.FontName = "Arial";
XSSFCellStyle phoneCellStyle = (XSSFCellStyle)workbook.CreateCellStyle();
XSSFDataFormat phoneDataFormat = (XSSFDataFormat)workbook.CreateDataFormat();
phoneCellStyle.SetDataFormat(phoneDataFormat.GetFormat("000-000-0000"));
phoneCellStyle.FillBackgroundColor = IndexedColors.LightYellow.Index;
dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateintConstraint(OperatorType.BETWEEN, "1000000000", "9999999999");
sheet.AddValidationData(dataValidation);
sheet.SetDefaultColumnStyle(headerCount, phoneCellStyle);
Ograniczenie adresu e-mail dla kolumn e-mail
string emailValidationFormula = GetEmailValidationFormula(targetFirstCol);
CellRangeAddressList cellRangeFieldsType5 = new CellRangeAddressList(1, DVRowLimit, targetFirstCol, targetLastCol);
dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateCustomConstraint(emailValidationFormula)
// pobierz prywatny wzór sprawdzania poprawności adresu e-mailowego GetEmailValidationFormula (int targetColumn) {
int div = headerCount + 1;
string colLetter = String.Empty;
int mod = 0;
try
{
while (div > 0)
{
mod = (div - 1) % 26;
colLetter = (char)(65 + mod) + colLetter;
div = (int)((div - mod) / 26);
}
}
catch (Exception Ex)
{
logger.Error("Error ", Ex);
}
return "=AND(FIND(\"@\"," + colLetter + "2),FIND(\".\"," + colLetter + "2),ISERROR(FIND(\" \"," + colLetter + "2)))";
}
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow