public static bool IsExcelNumberDataType(TypeCode type) { if (FormatHandler.GetDataType(type) == ExcelDataType.Number) { return(true); } return(false); }
private static string GetDateTimeFormat(string format, string language, object rplCalendar) { if (format == null || format.Length <= 0) { format = "G"; } CultureInfo cultureInfo = CultureInfo.CreateSpecificCulture(language); cultureInfo = new CultureInfo(cultureInfo.Name, false); if (cultureInfo.DateTimeFormat == null) { cultureInfo.DateTimeFormat = DateTimeFormatInfo.CurrentInfo; } if (rplCalendar != null) { bool flag = false; Calendar calendarInstance = LayoutConvert.GetCalendarInstance((RPLFormat.Calendars)rplCalendar); Type type = calendarInstance.GetType(); Calendar[] optionalCalendars = cultureInfo.OptionalCalendars; foreach (Calendar calendar in optionalCalendars) { if (type == calendar.GetType()) { flag = true; break; } } if (flag) { cultureInfo.DateTimeFormat.Calendar = calendarInstance; } else { calendarInstance = new GregorianCalendar(); cultureInfo.DateTimeFormat.Calendar = calendarInstance; } } string empty = string.Empty; DateTimeFormatInfo dateTimeFormat = cultureInfo.DateTimeFormat; string timeSeparator = dateTimeFormat.TimeSeparator; string dateSeparator = dateTimeFormat.DateSeparator; empty = ((format.Length != 1) ? format : FormatHandler.GetDateTimePattern(format[0], dateTimeFormat)); return(FormatHandler.GetExcelPictureDateTimeFormat(empty, timeSeparator, dateSeparator)); }
public static string GetExcelNumberFormat(string rsNumberFormat, string language, RPLFormat.Calendars rplCalendar, string numeralLanguage, int numeralVariant, TypeCode type, object originalValue, out string hexFormula, out bool invalidFormatCode) { hexFormula = null; string empty = string.Empty; string str = string.Empty; invalidFormatCode = false; if (type != TypeCode.DateTime) { bool flag = false; bool flag2 = default(bool); empty = FormatHandler.GetNumberFormat(rsNumberFormat, language, out flag2, type, originalValue, ref flag); if (string.IsNullOrEmpty(empty)) { invalidFormatCode = true; } else if (!flag2) { if (empty != null && empty.Length > 0 && empty != "General") { str = FormatHandler.GetFormatStringPrefix(rplCalendar, numeralVariant, language, numeralLanguage); } } else { hexFormula = empty; } } else { empty = FormatHandler.GetDateTimeFormat(rsNumberFormat, language, rplCalendar); if (string.IsNullOrEmpty(empty)) { invalidFormatCode = true; } else { str = FormatHandler.GetFormatStringPrefix(rplCalendar, numeralVariant, language, numeralLanguage); } } return(str + empty); }
private static string GetCurrencyFormat(NumberFormatInfo numberFormatInfo, int precision) { string currencyDecimalSeparator = NumberFormatInfo.InvariantInfo.CurrencyDecimalSeparator; string currencyGroupSeparator = NumberFormatInfo.InvariantInfo.CurrencyGroupSeparator; int[] currencyGroupSizes = numberFormatInfo.CurrencyGroupSizes; int currencyNegativePattern = numberFormatInfo.CurrencyNegativePattern; int currencyPositivePattern = numberFormatInfo.CurrencyPositivePattern; string text = "\"" + numberFormatInfo.CurrencySymbol + "\""; string text2 = '\\' + numberFormatInfo.NegativeSign; int num = 3; if (currencyGroupSizes.Length > 0) { num = currencyGroupSizes[0]; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("#"); stringBuilder.Append(currencyGroupSeparator); for (int i = 0; i < num - 1; i++) { stringBuilder.Append("#"); } stringBuilder.Append('0'); if (0 < precision) { stringBuilder.Append(currencyDecimalSeparator); } for (int j = 0; j < precision; j++) { stringBuilder.Append('0'); } StringBuilder stringBuilder2 = new StringBuilder(string.Format(CultureInfo.InvariantCulture, FormatHandler.GetPositiveCurrencyPattern(currencyPositivePattern), stringBuilder.ToString(), text)); stringBuilder2.Append(";"); stringBuilder2.Append(string.Format(CultureInfo.InvariantCulture, FormatHandler.GetNegativeCurrencyPattern(currencyNegativePattern), stringBuilder.ToString(), text, text2)); return(stringBuilder2.ToString()); }
private static string GetNumberFormat(NumberFormatInfo numberFormatInfo, int precision) { string numberDecimalSeparator = NumberFormatInfo.InvariantInfo.NumberDecimalSeparator; string numberGroupSeparator = NumberFormatInfo.InvariantInfo.NumberGroupSeparator; int[] numberGroupSizes = numberFormatInfo.NumberGroupSizes; int numberNegativePattern = numberFormatInfo.NumberNegativePattern; string negativeSign = numberFormatInfo.NegativeSign; int num = 3; if (numberGroupSizes.Length > 0) { num = numberGroupSizes[0]; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("#"); stringBuilder.Append(numberGroupSeparator); for (int i = 0; i < num - 1; i++) { stringBuilder.Append("#"); } stringBuilder.Append('0'); if (precision > 0) { stringBuilder.Append(numberDecimalSeparator); } for (int j = 0; j < precision; j++) { stringBuilder.Append('0'); } StringBuilder stringBuilder2 = new StringBuilder(stringBuilder.ToString()); stringBuilder2.Append(";"); stringBuilder2.Append(string.Format(CultureInfo.InvariantCulture, FormatHandler.GetNegativePattern(numberNegativePattern), stringBuilder.ToString(), numberFormatInfo.NegativeSign)); return(stringBuilder2.ToString()); }
private static string GetFormatStringPrefix(RPLFormat.Calendars?calendar, int numeralVariant, string language, string numeralLanguage) { if (-1 != numeralVariant && calendar.HasValue && numeralLanguage != null && language != null) { string excelCalendarDigits = FormatHandler.GetExcelCalendarDigits(calendar.Value); string value = string.Empty; int languageLCID = FormatHandler.GetLanguageLCID(language); string value2 = string.Empty; if (numeralVariant != 2) { if (numeralVariant.Equals("3")) { value2 = FormatHandler.GetExcelNumeralVariant(numeralLanguage); } else { switch (numeralVariant) { case 4: value = "[DBNUM1]"; languageLCID = FormatHandler.GetLanguageLCID(numeralLanguage); value2 = string.Empty; break; case 5: value = "[DBNUM2]"; languageLCID = FormatHandler.GetLanguageLCID(numeralLanguage); value2 = string.Empty; break; case 6: value = "[DBNUM3]"; languageLCID = FormatHandler.GetLanguageLCID(numeralLanguage); value2 = string.Empty; break; case 7: value = "[DBNUM4]"; languageLCID = FormatHandler.GetLanguageLCID(numeralLanguage); value2 = string.Empty; break; } } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(value); stringBuilder.Append("[$-"); stringBuilder.Append(value2); stringBuilder.Append(excelCalendarDigits); string text = System.Convert.ToString(languageLCID, 16); if (text.Length < 4) { for (int num = 4 - text.Length; num > 0; num--) { text = "0" + text; } } stringBuilder.Append(text); stringBuilder.Append("]"); return(stringBuilder.ToString()); } return(string.Empty); } return(string.Empty); }
private static string GetNumberFormat(string format, string language, out bool isHex, TypeCode typeCode, object originalValue, ref bool isGeneral) { isHex = false; if (string.IsNullOrEmpty(format)) { return("General"); } CultureInfo cultureInfo = CultureInfo.CreateSpecificCulture(language); cultureInfo = new CultureInfo(cultureInfo.Name, false); NumberFormatInfo numberFormat = cultureInfo.NumberFormat; if (format.Length > 3) { return(FormatHandler.GetExcelPictureNumberFormat(format)); } if (format.Length == 1) { switch (format[0]) { case 'x': switch (typeCode) { case TypeCode.SByte: case TypeCode.Byte: case TypeCode.Int16: case TypeCode.UInt16: case TypeCode.Int32: case TypeCode.UInt32: case TypeCode.Int64: case TypeCode.UInt64: isHex = true; return("LOWER(DEC2HEX({0}))"); default: return(string.Empty); } case 'X': switch (typeCode) { case TypeCode.SByte: case TypeCode.Byte: case TypeCode.Int16: case TypeCode.UInt16: case TypeCode.Int32: case TypeCode.UInt32: case TypeCode.Int64: case TypeCode.UInt64: isHex = true; return("DEC2HEX({0})"); default: return(string.Empty); } case 'C': case 'c': return(FormatHandler.GetCurrencyFormat(numberFormat, numberFormat.CurrencyDecimalDigits)); case 'N': case 'n': return(FormatHandler.GetNumberFormat(numberFormat, numberFormat.NumberDecimalDigits)); case 'G': case 'g': return("General"); default: return(FormatHandler.GetShortNumberFormat(format[0])); } } bool flag = false; int num = default(int); if (int.TryParse(format.Substring(1), out num)) { switch (format[0]) { case 'x': switch (typeCode) { case TypeCode.SByte: case TypeCode.Byte: case TypeCode.Int16: case TypeCode.UInt16: case TypeCode.Int32: case TypeCode.UInt32: case TypeCode.Int64: case TypeCode.UInt64: isHex = true; return("LOWER(DEC2HEX({0}, " + num + "))"); default: return(string.Empty); } case 'X': switch (typeCode) { case TypeCode.SByte: case TypeCode.Byte: case TypeCode.Int16: case TypeCode.UInt16: case TypeCode.Int32: case TypeCode.UInt32: case TypeCode.Int64: case TypeCode.UInt64: isHex = true; return("DEC2HEX({0}, " + num + ")"); default: return(string.Empty); } case 'C': case 'c': return(FormatHandler.GetCurrencyFormat(numberFormat, num)); case 'N': case 'n': return(FormatHandler.GetNumberFormat(numberFormat, num)); case 'G': case 'g': { if (originalValue == null) { return(string.Empty); } char generalFormat = FormatHandler.GetGeneralFormat(typeCode, originalValue, num, cultureInfo); isGeneral = true; return(FormatHandler.GetLongNumberFormat(generalFormat, num)); } default: return(FormatHandler.GetLongNumberFormat(format[0], num)); } } return(FormatHandler.GetExcelPictureNumberFormat(format)); }
private static string GetExcelPictureNumberFormat(string format) { string text = format.ToUpperInvariant(); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < format.Length; i++) { switch (format[i]) { case '"': case '\'': { char c = format[i]; stringBuilder.Append('"'); i++; bool flag = false; while (i < format.Length) { if (format[i] != c) { stringBuilder.Append(format[i]); i++; continue; } flag = true; break; } if (flag) { stringBuilder.Append('"'); } break; } case 'E': case 'e': stringBuilder.Append(format[i]); if (i + 1 < format.Length && format[i + 1] == '0') { stringBuilder.Append('-'); } break; case '\\': if (i + 1 < format.Length && format[i + 1] == '\'') { stringBuilder.Append("\\'"); i++; } else if (i + 1 < format.Length && format[i + 1] == '"') { stringBuilder.Append("\\005c\""); i++; } else { stringBuilder.Append('"'); stringBuilder.Append(format[i]); stringBuilder.Append('"'); } break; case '*': case '_': stringBuilder.Append('"'); stringBuilder.Append(format[i]); stringBuilder.Append('"'); break; default: if (FormatHandler.NeedNumberEscape(text[i])) { stringBuilder.Append('"'); stringBuilder.Append(format[i]); stringBuilder.Append('"'); } else { stringBuilder.Append(format[i]); } break; } } return(stringBuilder.ToString()); }