浏览代码

excel的Column扩展,支持字母列获取

懒得勤快 3 年之前
父节点
当前提交
efdf739445

+ 1 - 1
Masuit.Tools.Abstractions/Extensions/BaseType/ObjectExtensions.cs

@@ -143,7 +143,7 @@ namespace Masuit.Tools
         /// <returns></returns>
         public static T IfNull<T>(this T s, T value)
         {
-            return s is { } ? s : value;
+            return s ?? value;
         }
 
         /// <summary>

+ 1 - 1
Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj

@@ -18,7 +18,7 @@
         <LangVersion>latest</LangVersion>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>1.0.5.1</Version>
+        <Version>1.0.5.2</Version>
         <FileVersion>1.0</FileVersion>
         <Company>masuit.com</Company>
         <AssemblyVersion>1.0</AssemblyVersion>

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -34,7 +34,7 @@ github:https://github.com/ldqk/Masuit.Tools
         <PackageReference Include="HtmlSanitizer" Version="7.1.488" />
         <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
         <PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
-        <PackageReference Include="SharpCompress" Version="0.30.1" />
+        <PackageReference Include="SharpCompress" Version="0.31.0" />
     </ItemGroup>
 
     <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0'">

+ 29 - 0
Masuit.Tools.Excel/ExcelExtension.cs

@@ -298,5 +298,34 @@ namespace Masuit.Tools.Excel
                 }
             }
         }
+
+        private static readonly NumberFormater NumberFormater = new("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1);
+
+        /// <summary>
+        /// 获取字母列
+        /// </summary>
+        /// <param name="sheet"></param>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        public static ExcelColumn Column(this ExcelWorksheet sheet, string index)
+        {
+            return sheet.Column((int)NumberFormater.FromString(index));
+        }
+
+        /// <summary>
+        /// 获取字母列
+        /// </summary>
+        /// <param name="sheet"></param>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        public static ExcelColumn Column(this ExcelWorksheet sheet, char index)
+        {
+            if (index is < 'A' or > 'Z')
+            {
+                throw new ArgumentOutOfRangeException(nameof(index));
+            }
+
+            return sheet.Column(index - 64);
+        }
     }
 }

+ 1 - 1
Masuit.Tools.Excel/Masuit.Tools.Excel.csproj

@@ -3,7 +3,7 @@
         <TargetFrameworks>netstandard2.0;netstandard2.1;net461;net5;net6</TargetFrameworks>
         <LangVersion>latest</LangVersion>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Version>1.1</Version>
+        <Version>1.1.1</Version>
         <Authors>懒得勤快</Authors>
         <Description>Masuit.Tools.Excel导出库,支持一些简单数据的导出,支持图片列</Description>
         <Copyright>懒得勤快</Copyright>

+ 10 - 27
Masuit.Tools.NoSQL.MongoDBClient/MongoDbClient.cs

@@ -12,9 +12,8 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
     public class MongoDbClient
     {
         public MongoClient Client { get; set; }
+
         public IMongoDatabase Database { get; set; }
-        private static ConcurrentDictionary<string, MongoDbClient> InstancePool { get; set; } = new ConcurrentDictionary<string, MongoDbClient>();
-        private static ConcurrentDictionary<string, ConcurrentLimitedQueue<MongoDbClient>> InstanceQueue { get; set; } = new ConcurrentDictionary<string, ConcurrentLimitedQueue<MongoDbClient>>();
 
         private MongoDbClient(string url, string database)
         {
@@ -36,14 +35,7 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
         /// <returns></returns>
         public static MongoDbClient GetInstance(string url, string database)
         {
-            InstancePool.TryGetValue(url + database, out var instance);
-            if (instance is null)
-            {
-                instance = new MongoDbClient(url, database);
-                InstancePool.TryAdd(url + database, instance);
-            }
-
-            return instance;
+            return new MongoDbClient(url, database);
         }
 
         /// <summary>
@@ -54,19 +46,10 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
         /// <returns></returns>
         public static MongoDbClient ThreadLocalInstance(string url, string database)
         {
-            var queue = InstanceQueue.GetOrAdd(url + database, new ConcurrentLimitedQueue<MongoDbClient>(32));
-            if (queue.IsEmpty)
-            {
-                Parallel.For(0, queue.Limit, i =>
-                {
-                    queue.Enqueue(new MongoDbClient(url, database));
-                });
-            }
-
             MongoDbClient instance;
             if (CallContext<MongoDbClient>.GetData(url + database) == null)
             {
-                queue.TryDequeue(out instance);
+                instance = new MongoDbClient(url, database);
                 CallContext<MongoDbClient>.SetData(url + database, instance);
             }
 
@@ -221,7 +204,7 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return result.ProcessedRequests.ToList();
         }
 
-        #endregion
+        #endregion 插入
 
         #region 更新
 
@@ -418,7 +401,7 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return result;
         }
 
-        #endregion
+        #endregion 更新
 
         #region 删除
 
@@ -864,9 +847,9 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return result;
         }
 
-        #endregion
+        #endregion 删除
 
-        #region 查询 
+        #region 查询
 
         /// <summary>
         /// 查询,复杂查询直接用Linq处理
@@ -1037,7 +1020,7 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return await find.AnyAsync();
         }
 
-        #endregion
+        #endregion 查询
 
         #region 索引
 
@@ -1205,6 +1188,6 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return await mgr.CreateOneAsync(new CreateIndexModel<T>(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key)));
         }
 
-        #endregion
+        #endregion 索引
     }
-}
+}