formatCellValue static method
Implementation
static String formatCellValue(String value, MsSsCell cell, List<SSStyle> spreadSheetStyles) {
String retValue = value;
if (cell.style != null) {
var cellStyle = spreadSheetStyles.firstWhereOrNull((style) {
return style.id == cell.style;
});
if (cellStyle != null) {
if (cellStyle.numFormat.id.isNotEmpty) {
switch (cellStyle.numFormat.format) {
case 'd':
if (int.tryParse(value) != null) {
DateTime baseDate = DateTime(1900, 1, 1);
DateTime dartDate;
if (int.parse(value) <= 60) {
// up to Feb 29 1900
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // Subtract 2 (account for Jan 1, 1900 being 2)
} else {
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // subtract 2
}
retValue = DateFormat('d').format(dartDate);
}
case 'dd': // day of the month as a zero-padded decimal number
if (int.tryParse(value) != null) {
DateTime baseDate = DateTime(1900, 1, 1);
DateTime dartDate;
if (int.parse(value) <= 60) {
// up to Feb 29 1900
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // Subtract 2 (account for Jan 1, 1900 being 2)
} else {
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // subtract 2
}
retValue = DateFormat('dd').format(dartDate);
}
case 'ddd': // abbreviated weekday as text
if (int.tryParse(value) != null) {
DateTime baseDate = DateTime(1900, 1, 1);
DateTime dartDate;
if (int.parse(value) <= 60) {
// up to Feb 29 1900
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // Subtract 2 (account for Jan 1, 1900 being 2)
} else {
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // subtract 2
}
retValue = DateFormat('EEE').format(dartDate);
}
case 'MMMM': // month as text
if (int.tryParse(value) != null) {
DateTime baseDate = DateTime(1900, 1, 1);
DateTime dartDate;
if (int.parse(value) <= 60) {
// up to Feb 29 1900
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // Subtract 2 (account for Jan 1, 1900 being 2)
} else {
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // subtract 2
}
retValue = DateFormat('MMMM').format(dartDate);
}
case 'dd/MMM/YYYY': // day/month/year
if (int.tryParse(value) != null) {
DateTime baseDate = DateTime(1900, 1, 1);
DateTime dartDate;
if (int.parse(value) <= 60) {
// up to Feb 29 1900
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // Subtract 2 (account for Jan 1, 1900 being 2)
} else {
dartDate = baseDate.add(Duration(days: int.parse(value) - 2)); // subtract 2
}
retValue = DateFormat('dd/MMM/yyyy').format(dartDate);
}
default:
retValue = value; // or throw an exception
}
}
}
}
return retValue;
}