Compare commits

...

2 Commits

4 changed files with 51 additions and 7 deletions

View File

@ -1,4 +1,5 @@
using System.IO.Compression;
using System.Globalization;
using System.IO.Compression;
using System.Text;
using System.Xml.Linq;
@ -206,6 +207,49 @@ public class ExcelReader : DisposeBase
val = TimeSpan.FromSeconds(Math.Round(str.ToDouble() * 24 * 3600));
}
}
// 自动处理0/General
else if (st.NumFmtId == 0)
{
if (val is String str)
{
if (Int32.TryParse(str, out var n)) return n;
if (Int64.TryParse(str, out var m)) return m;
if (Decimal.TryParse(str, NumberStyles.Float, CultureInfo.InvariantCulture, out var d)) return d;
if (Double.TryParse(str, out var d2)) return d2;
}
}
else if (st.NumFmtId is 1 or 3 or 37 or 38)
{
if (val is String str)
{
if (Int32.TryParse(str, out var n)) return n;
if (Int64.TryParse(str, out var m)) return m;
}
}
else if (st.NumFmtId is 2 or 4 or 11 or 39 or 40)
{
if (val is String str)
{
if (Decimal.TryParse(str, NumberStyles.Float, CultureInfo.InvariantCulture, out var d)) return d;
if (Double.TryParse(str, out var d2)) return d2;
}
}
else if (st.NumFmtId is 9 or 10)
{
if (val is String str)
{
if (Double.TryParse(str, out var d2)) return d2;
}
}
// 文本Text
else if (st.NumFmtId == 49)
{
if (val is String str)
{
if (Decimal.TryParse(str, NumberStyles.Float, CultureInfo.InvariantCulture, out var d)) return d.ToString();
if (Double.TryParse(str, out var d2)) return d2.ToString();
}
}
return val;
}
@ -242,14 +286,14 @@ public class ExcelReader : DisposeBase
[11] = "0.00E+00",
[12] = "# ?/?",
[13] = "# ??/??",
[14] = "mm/dd/yy",
[14] = "mm-dd-yy",
[15] = "d-mmm-yy",
[16] = "d-mmm",
[17] = "mmm-yy",
[18] = "h:mm AM/PM",
[19] = "h:mm:ss AM/PM",
[20] = "h:mm",
[21] = "h:mm:dd",
[21] = "h:mm:ss",
[22] = "m/d/yy h:mm",
[37] = "#,##0 ;(#,##0)",
[38] = "#,##0 ;[Red](#,##0)",

View File

@ -7,7 +7,7 @@
<Description>Core basic components: log (file / network), configuration (XML / JSON / HTTP), cache, network (TCP / UDP / HTTP /WebSocket), serialization (binary / XML / JSON), APM performance tracking. 核心基础组件,日志(文件/网络、配置XML/Json/Http、缓存、网络Tcp/Udp/Http/WebSocket、序列化Binary/XML/Json、APM性能追踪。</Description>
<Company>新生命开发团队</Company>
<Copyright>©2002-2025 NewLife</Copyright>
<VersionPrefix>11.5</VersionPrefix>
<VersionPrefix>11.6</VersionPrefix>
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
<FileVersion>$(Version)</FileVersion>
@ -32,7 +32,7 @@
<RepositoryUrl>https://github.com/NewLifeX/X</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>新生命团队;X组件;NewLife;$(AssemblyName)</PackageTags>
<PackageReleaseNotes>改进ChangeType浮点数转换支持科学计数法</PackageReleaseNotes>
<PackageReleaseNotes>改进Host.Close让应用有序退出增强DbTable的大数据文件读写能力支持机器学场景优化Binary二进制读写支持压缩数据流改进Linux内存采集改进ExcelReader对常规数字的读取</PackageReleaseNotes>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>

View File

@ -6,7 +6,7 @@
<Description>扩展加密算法</Description>
<Company>新生命开发团队</Company>
<Copyright>©2002-2025 NewLife</Copyright>
<VersionPrefix>11.5</VersionPrefix>
<VersionPrefix>11.6</VersionPrefix>
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
<FileVersion>$(Version)</FileVersion>

View File

@ -36,7 +36,7 @@ public class ExcelReaderTests
else if (row1[i] is TimeSpan ts)
Assert.Equal(TimeSpan.Parse(values[i]), ts);
else
Assert.Equal(values[i], row1[i]);
Assert.Equal(values[i], row1[i] + "");
}
}