Allow trailing characters (m, cbm etc.) when importing numbers in Excel
This commit is contained in:
parent
28878447b8
commit
c4cd477002
@ -7,6 +7,7 @@ using Microsoft.Office.Interop.Excel;
|
||||
using System.Runtime.InteropServices;
|
||||
using log4net;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace ENI2.Excel
|
||||
{
|
||||
@ -105,6 +106,20 @@ namespace ENI2.Excel
|
||||
}
|
||||
}
|
||||
|
||||
private static double? ParseAnyDouble(string val)
|
||||
{
|
||||
double? result = null;
|
||||
if (double.TryParse(val, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
|
||||
CultureInfo.InvariantCulture, out double tmpDouble))
|
||||
result = tmpDouble;
|
||||
if (result == null)
|
||||
{
|
||||
if (double.TryParse(val, out tmpDouble)) // current language style (==GER, mit , statt .)
|
||||
result = tmpDouble;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal double? ReadNumber(string lookup)
|
||||
{
|
||||
double? result = null;
|
||||
@ -114,15 +129,17 @@ namespace ENI2.Excel
|
||||
{
|
||||
var val = _nameDict[lookup].RefersToRange.Value;
|
||||
if (val is double) result = val;
|
||||
if (val is string)
|
||||
if ((val is string) && (val.Length > 0))
|
||||
{
|
||||
if (double.TryParse(val, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
|
||||
CultureInfo.InvariantCulture, out double tmpDouble))
|
||||
result = tmpDouble;
|
||||
if (result == null)
|
||||
result = ParseAnyDouble(val);
|
||||
|
||||
if(result == null)
|
||||
{
|
||||
if (double.TryParse(val, out tmpDouble)) // current language style (==GER, mit , statt .)
|
||||
result = tmpDouble;
|
||||
Match m = Regex.Match(val, "([0-9\\.\\,]+)([a-zA-Z]*)");
|
||||
if (m.Success)
|
||||
{
|
||||
result = ParseAnyDouble(m.Groups[1].Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user