schangxiang@126.com
2025-05-07 44d277ec414a9223619730646f99ec16df78a451
支持 导出模板
已添加3个文件
已修改4个文件
385 ■■■■■ 文件已修改
Weben_CMS专用代码生成器/Code/App.config 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Const/TemplateConst.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/File/ExcelTemplateFile/CommonTemplate.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/ImportTemplteHelper.cs 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/packages.config 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/App.config
@@ -22,6 +22,30 @@
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Security.Cryptography.Pkcs" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Const/TemplateConst.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
using System;
namespace GenerateCode_WeiBen_WMS.Const
{
    public class TemplateConst
    {
        /// <summary>
        /// ç”Ÿæˆå¯¼å…¥æ¨¡æ¿çš„Excel文件路径(公共)
        /// </summary>
        public static string EXCEL_TEMPLATEFILE_导入模版路径 = AppDomain.CurrentDomain.BaseDirectory + @"\File\ExcelTemplateFile";
        public static string EXCEL_TEMPLATEFILE_导入模版名称后缀 = "导出模板";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/File/ExcelTemplateFile/CommonTemplate.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/GenerateCode_WeiBen_CMS.csproj
@@ -28,6 +28,8 @@
    <UseApplicationTrust>false</UseApplicationTrust>
    <BootstrapperEnabled>true</BootstrapperEnabled>
    <TargetFrameworkProfile />
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <PlatformTarget>x86</PlatformTarget>
@@ -54,14 +56,47 @@
    <ApplicationIcon>Robot.ico</ApplicationIcon>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="EPPlus.Interfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=a694d7f3b0907a61, processorArchitecture=MSIL">
      <HintPath>packages\EPPlus.Interfaces.8.0.0\lib\net462\EPPlus.Interfaces.dll</HintPath>
    </Reference>
    <Reference Include="Magicodes.IE.EPPlus, Version=2.7.5.2, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>packages\Magicodes.IE.EPPlus.2.7.5.2\lib\netstandard2.0\Magicodes.IE.EPPlus.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Configuration, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.Configuration.3.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Configuration.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.Configuration.Abstractions.3.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Configuration.FileExtensions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.Configuration.FileExtensions.3.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.FileExtensions.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Configuration.Json, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.Configuration.Json.3.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Json.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.DependencyInjection.Abstractions.8.0.2\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.FileProviders.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.FileProviders.Abstractions.3.1.0\lib\netstandard2.0\Microsoft.Extensions.FileProviders.Abstractions.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.FileProviders.Physical, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.FileProviders.Physical.3.1.0\lib\netstandard2.0\Microsoft.Extensions.FileProviders.Physical.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.FileSystemGlobbing, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.FileSystemGlobbing.3.1.0\lib\netstandard2.0\Microsoft.Extensions.FileSystemGlobbing.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.Logging.Abstractions.8.0.2\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Extensions.Primitives, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.Extensions.Primitives.3.1.0\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>packages\Microsoft.IO.RecyclableMemoryStream.3.0.1\lib\netstandard2.0\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
    </Reference>
    <Reference Include="MySqlConnector, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d33d3e53aa5f8c92, processorArchitecture=MSIL">
      <HintPath>packages\MySqlConnector.2.4.0\lib\net48\MySqlConnector.dll</HintPath>
@@ -69,14 +104,31 @@
    <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="PresentationCore" />
    <Reference Include="SixLabors.ImageSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL">
      <HintPath>packages\SixLabors.ImageSharp.1.0.4\lib\net472\SixLabors.ImageSharp.dll</HintPath>
    </Reference>
    <Reference Include="SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
      <HintPath>packages\SkiaSharp.2.88.6\lib\net462\SkiaSharp.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
    </Reference>
    <Reference Include="System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.ComponentModel.Annotations.5.0.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
    </Reference>
    <Reference Include="System.ComponentModel.Composition" />
    <Reference Include="System.ComponentModel.DataAnnotations" />
    <Reference Include="System.configuration" />
    <Reference Include="System.Core" />
    <Reference Include="System.Diagnostics.DiagnosticSource, Version=8.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.Diagnostics.DiagnosticSource.8.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
    </Reference>
    <Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
      <Private>True</Private>
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
@@ -85,13 +137,57 @@
    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
      <Private>True</Private>
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    </Reference>
    <Reference Include="System.Security" />
    <Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
      <Private>True</Private>
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
      <Private>True</Private>
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Security.Cryptography.Pkcs, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Security.Cryptography.Pkcs.4.7.0\lib\net461\System.Security.Cryptography.Pkcs.dll</HintPath>
    </Reference>
    <Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
      <Private>True</Private>
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
      <Private>True</Private>
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Security.Cryptography.Xml, Version=8.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.Security.Cryptography.Xml.8.0.2\lib\net462\System.Security.Cryptography.Xml.dll</HintPath>
    </Reference>
    <Reference Include="System.Text.Encoding.CodePages, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>packages\System.Text.Encoding.CodePages.4.7.0\lib\net461\System.Text.Encoding.CodePages.dll</HintPath>
    </Reference>
    <Reference Include="System.Text.Encodings.Web, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.Text.Encodings.Web.4.7.0\lib\netstandard2.0\System.Text.Encodings.Web.dll</HintPath>
    </Reference>
    <Reference Include="System.Text.Json, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.Text.Json.4.7.0\lib\net461\System.Text.Json.dll</HintPath>
    </Reference>
    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
    </Reference>
    <Reference Include="System.Transactions" />
    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
    </Reference>
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="System.Data" />
@@ -102,6 +198,7 @@
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Const\SystemConst.cs" />
    <Compile Include="Const\TemplateConst.cs" />
    <Compile Include="DataBaseFactory\DataBaseServiceHandle.cs" />
    <Compile Include="DataBaseFactory\DataBaseServiceFactory.cs" />
    <Compile Include="DataBaseFactory\Default\SqlServerDataBaseServiceHandle.cs" />
@@ -163,6 +260,7 @@
    <Compile Include="Generate\Model_Generate.cs" />
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Utility\ImportTemplteHelper.cs" />
    <Compile Include="Utility\ListHelper.cs" />
    <Compile Include="Utility\MySqlHelper.cs" />
    <Compile Include="Utility\SQLHelper.cs" />
@@ -188,6 +286,9 @@
      <DependentUpon>MainForm.cs</DependentUpon>
    </EmbeddedResource>
    <None Include="App.config" />
    <None Include="File\ExcelTemplateFile\CommonTemplate.xlsx">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Include="packages.config" />
    <None Include="Properties\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
@@ -378,6 +479,15 @@
  </ItemGroup>
  <ItemGroup />
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="packages\SkiaSharp.NativeAssets.macOS.2.88.6\build\net462\SkiaSharp.NativeAssets.macOS.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.macOS.2.88.6\build\net462\SkiaSharp.NativeAssets.macOS.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>这台计算机上缺少此项目引用的 NuGet ç¨‹åºåŒ…。使用“NuGet ç¨‹åºåŒ…还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('packages\SkiaSharp.NativeAssets.macOS.2.88.6\build\net462\SkiaSharp.NativeAssets.macOS.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\SkiaSharp.NativeAssets.macOS.2.88.6\build\net462\SkiaSharp.NativeAssets.macOS.targets'))" />
    <Error Condition="!Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.6\build\net462\SkiaSharp.NativeAssets.Win32.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\SkiaSharp.NativeAssets.Win32.2.88.6\build\net462\SkiaSharp.NativeAssets.Win32.targets'))" />
  </Target>
  <Import Project="packages\SkiaSharp.NativeAssets.Win32.2.88.6\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.6\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.cs
@@ -8,6 +8,7 @@
using GenerateCode_WeiBen_WMS.DataBaseFactory;
using GenerateCode_WeiBen_WMS.Const;
using GenerateCode_WeiBen_WMS.Model;
using GenerateCode_WeiBen_WMS.Utility;
namespace GenerateCode_GEBrilliantFactory
{
@@ -270,7 +271,7 @@
                //生成Model
                //CreateModelFile(columnList, tableName, filePrefixName, wcf_NameSpacePath, createPerson, chinaComment, entityName, modulelogo);
                //CreateModelParamFile(columnList, tableName, filePrefixName, wcf_NameSpacePath, createPerson, chinaComment, entityName, modulelogo);
                 genCodeRootPath = tbPath.Text + @"\" + tb_WCF_NameSpacePath.Text.Trim();
                genCodeRootPath = tbPath.Text + @"\" + tb_WCF_NameSpacePath.Text.Trim();
                var webFolerPath = (tb_WCF_NameSpacePath.Text.Trim() + "_Web").ToLower();
                #region å®žä½“ç±»
                var entityFilePath = genCodeRootPath + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Application.Contracts\Dtos\" + tb_EntityName.Text.Trim();
@@ -461,6 +462,9 @@
                str_generate = AutoMapperProfile_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(autoMapFilePath, param.EntityName + $"AutoMapperProfile.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //37、生成 å¯¼å‡ºæ¨¡æ¿Excel文件
                List<ColumnModel> newColumnNameList = ListHelper.RemoveForPageTableListQueryAttributes(param.ColumnNameList);
                ImportTemplteHelper.CreateImportTemplte(param, newColumnNameList, genCodeRootPath);
                ////生成 OutputModel æ–‡ä»¶
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/ImportTemplteHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
using GenerateCode_GEBrilliantFactory;
using GenerateCode_WeiBen_WMS.Const;
using GenerateCode_WeiBen_WMS.Model;
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenerateCode_WeiBen_WMS.Utility
{
    public class ImportTemplteHelper
    {
        /// <summary>
        /// æ ¹æ®è¡¨ååˆ›å»ºå¯¼å…¥æ¨¡ç‰ˆ
        /// </summary>
        /// <param name="input"></param>
        public static void CreateImportTemplte(GenerateCodeParam input, List<ColumnModel> tableFieldList, string genCodeRootPath)
        {
            string errMsg = string.Empty;
            //业务名
            string _busName = input.EntityName;
            var copayPath = TemplateConst.EXCEL_TEMPLATEFILE_导入模版路径 + "\\CommonTemplate.xlsx";
            var fileFolderPath = genCodeRootPath + "\\server\\src\\CMS.Plugin." + input.NameSpacePath + "\\Resources\\Templates";
            if (!Directory.Exists(fileFolderPath))
            {
                Directory.CreateDirectory(fileFolderPath);
            }
            string newPath = fileFolderPath + $"\\{_busName}{TemplateConst.EXCEL_TEMPLATEFILE_导入模版名称后缀}.xlsx";
            CreatExcel(tableFieldList, copayPath, newPath);
        }
        /// <summary>
        /// æ ¹æ®å®žä½“类名 ç”Ÿæˆå¯¼å…¥excel模版
        /// </summary>
        /// <param name="tableFieldList">代码生成选择配置表的字段</param>
        /// <param name="copayPath"></param>
        /// <param name="newPath"></param>
        private static void CreatExcel(List<ColumnModel> tableFieldList, string copayPath, string newPath)
        {
            string errMsg = string.Empty;
            try
            {
                #region éªŒè¯åŽŸå§‹å¯¼å…¥æ¨¡æ¿æ–‡ä»¶æ˜¯å¦å­˜åœ¨
                if (!File.Exists(copayPath))
                {
                    errMsg = $"用来复制生成模版的EXCEL文件不存在";
                    throw new Exception($"生成导入模版文件异常:{errMsg}");
                }
                #endregion
                //获取模板文件
                FileInfo copyFile = new FileInfo(copayPath);
                // æ£€æŸ¥æ–°ç”Ÿæˆçš„导入模版文件是否存在,存在就删除,以避免可能的异常。
                if (File.Exists(newPath))
                {
                    File.Delete(newPath); // åˆ é™¤æ–‡ä»¶
                }
                //复制原始导入模版,创建新的导入模版文件
                copyFile.CopyTo(newPath, true);
                FileInfo existingFile = new FileInfo(newPath);
                using (ExcelPackage package = new ExcelPackage(existingFile))
                {
                    //获取模板内容
                    ExcelWorksheet worksheet = package.Workbook.Worksheets[0];//获取第一个worksheet
                                                                              //行和列都是从1开始,而不是从0开始!!!
                    int _remarkRowIndex = 1;//worksheet è¡Œç´¢å¼•(说明) æ³¨æ„ï¼šé»˜è®¤æ˜¯ç¬¬ä¸€è¡Œæ˜¯å¯¼å…¥æ¨¡ç‰ˆçš„说明
                    int _mergeRowCount = _remarkRowIndex;//合并行 ï¼ˆå¿…填字段数量) é»˜è®¤æ˜¯ç¬¬ä¸€è¡Œåˆå¹¶
                    int _titleRowIndex = 1;//worksheet è¡Œç´¢å¼•(标题)注意:默认是第一行是导入模版的标题
                    int _cellIndex = 1;//worksheet åˆ—索引 æ³¨æ„ï¼šé»˜è®¤æ˜¯ç¬¬ä¸€åˆ—开始设置导入模版的标题
                    //模版第一列作为模版使用,所有新增的列样式报错一致
                    var templateCell = worksheet.Cells[_titleRowIndex, _cellIndex];
                    string _remark = string.Empty;  //第一行添加说明,注意换行。
                    //获取要处理的代码生成配置的是增改的模版字段
                    var showCodeGenConfigs = tableFieldList.Where(w => 1 == 1).ToList();
                    showCodeGenConfigs = showCodeGenConfigs.Where(x => 1 == 1).ToList();
                    /*
                   int _mergeCellsCount = showCodeGenConfigs.Count();//合并列(模版赋值的标题列数)
                                                                     //获取必填字段
                   //创建模版说明
                   StringBuilder _remarkContentBuilder = GetParseTemplateHint(showCodeGenConfigs);
                   string _remarkContent = _remarkContentBuilder.ToString();
                   #region åˆå¹¶å•元格
                   //合并单元格,合并行和列。默认是合并第一行的所有标题列
                   var cellRange = worksheet.Cells[1, 1, _mergeRowCount, _mergeCellsCount];
                   cellRange.Value = _remarkContent;//合并单元格后的内容赋值
                   var mergeCell = cellRange.Merge = true;//合并
                   int rowHeight = GetRowHeightBasedOnContent(showCodeGenConfigs.Count()); // æ ¹æ®å†…容计算行高(这里需要你自己实现逻辑)
                   worksheet.Row(_remarkRowIndex).Height = rowHeight; // è®¾ç½®è¡Œé«˜ï¼Œæ³¨æ„EPPlus的单位不同,需要转换
                   #endregion
                   //*/
                    //循环创建模版标题列
                    foreach (var item in showCodeGenConfigs)
                    {
                        var currentCell = worksheet.Cells[_titleRowIndex, _cellIndex];
                        //给新模版列标题赋值
                        currentCell.Value = item.Description;
                        //复制拷贝的excel模版列,给新模版列样式赋值
                        currentCell.StyleID = templateCell.StyleID;
                        // worksheet.Column(_cellIndex).AutoFit();//宽度自适应
                        //给第二行赋值
                        var currentCell2 = worksheet.Cells[2, _cellIndex];
                        //给新模版列标题赋值
                        currentCell2.Value = "{{配置." + item.ColumnName + "}}";
                        //复制拷贝的excel模版列,给新模版列样式赋值
                        currentCell2.StyleID = templateCell.StyleID;
                        // worksheet.Column(_cellIndex).AutoFit();//宽度自适应
                        _cellIndex++;
                    }
                    package.Save();//保存
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"生成导入模版文件异常,请查看系统日志:" + ex.Message);
            }
            finally { }
        }
        // è¿™é‡Œæ˜¯ä¸€ä¸ªå‡è®¾çš„æ–¹æ³•,用于根据单元格内容计算行高。你需要根据实际情况来实现这个逻辑。
        private static int GetRowHeightBasedOnContent(int lineCount)
        {
            // è¿™é‡Œåªæ˜¯ä¸€ä¸ªç¤ºä¾‹é€»è¾‘,你可能需要更复杂的算法来决定合适的行高。
            return (lineCount + 3) * 20; //
        }
        private static StringBuilder GetParseTemplateHint(List<ColumnModel> requiredTableFieldList)
        {
            StringBuilder _remarkContentBuilder = new StringBuilder();
            _remarkContentBuilder.AppendLine("");
            _remarkContentBuilder.AppendLine("1.支持Excel2007及以上版本文件。");
            _remarkContentBuilder.AppendLine("2.导入数据时不能超过5000行。");
            _remarkContentBuilder.AppendLine("");
            _remarkContentBuilder.AppendLine("");
            Dictionary<string, string> typeNameDict = new Dictionary<string, string>()
            {
                { "string", "输入文本。"},
                { "int", "输入数字。"},
                { "long", "输入数字。"},
                { "decimal", "输入小数。"},
                { "bool", "是,否。"},
            };
            Dictionary<string, string> effectTypeDict = new Dictionary<string, string>()
            {
                { "datepicker", "日期。 ç¤ºä¾‹: 2023/3/1。"},
                { "datetimepicker", "日期时间。示例: 2023/3/1 12:00:00。"},
            };
            requiredTableFieldList.ForEach(x =>
            {
                string text = "";
                text += x.Description + "(" + (x.IsNullable ? "必填" : "非必填") + "): ";
                var _dataType = x.DataType.Replace("?", "").ToLower();
                //if (effectTypeDict.ContainsKey(x.EffectType.ToLower()))
                //{
                //    text += effectTypeDict[x.EffectType.ToLower()];
                //}
                //else if (x.EffectType.ToLower() == "enumselector")
                //{//注意:这个判断要放在判断_dataType前面,主要是考虑枚举和int类型的混淆
                //    var queryValue = x.NetType.Split('.').Last();
                //    var enumStr = _sysEnumService.GetEnumDataListStr(new EnumDataInput() { EnumName = queryValue });
                //    text += enumStr + "。";
                //}
                if (typeNameDict.ContainsKey(_dataType))
                {
                    text += typeNameDict[_dataType];
                }
                else
                {
                    text += ("注意:类型未能识别出来,需要自己维护!!!。");
                }
                _remarkContentBuilder.AppendLine(text);
            });
            return _remarkContentBuilder;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/packages.config
@@ -1,14 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EPPlus.Interfaces" version="8.0.0" targetFramework="net48" />
  <package id="Magicodes.IE.EPPlus" version="2.7.5.2" targetFramework="net48" />
  <package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.Configuration" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.Configuration.Abstractions" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.Configuration.FileExtensions" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.Configuration.Json" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" targetFramework="net48" />
  <package id="Microsoft.Extensions.FileProviders.Abstractions" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.FileProviders.Physical" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.FileSystemGlobbing" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.Extensions.Logging.Abstractions" version="8.0.2" targetFramework="net48" />
  <package id="Microsoft.Extensions.Primitives" version="3.1.0" targetFramework="net48" />
  <package id="Microsoft.IO.RecyclableMemoryStream" version="3.0.1" targetFramework="net48" />
  <package id="MySqlConnector" version="2.4.0" targetFramework="net48" />
  <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net451" />
  <package id="SixLabors.ImageSharp" version="1.0.4" targetFramework="net48" />
  <package id="SkiaSharp" version="2.88.6" targetFramework="net48" />
  <package id="SkiaSharp.NativeAssets.macOS" version="2.88.6" targetFramework="net48" />
  <package id="SkiaSharp.NativeAssets.Win32" version="2.88.6" targetFramework="net48" />
  <package id="System.Buffers" version="4.5.1" targetFramework="net48" />
  <package id="System.ComponentModel.Annotations" version="5.0.0" targetFramework="net48" />
  <package id="System.Diagnostics.DiagnosticSource" version="8.0.1" targetFramework="net48" />
  <package id="System.IO" version="4.3.0" targetFramework="net48" />
  <package id="System.Memory" version="4.5.5" targetFramework="net48" />
  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
  <package id="System.Runtime" version="4.3.0" targetFramework="net48" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
  <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
  <package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
  <package id="System.Security.Cryptography.Pkcs" version="4.7.0" targetFramework="net48" />
  <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
  <package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="net48" />
  <package id="System.Security.Cryptography.Xml" version="8.0.2" targetFramework="net48" />
  <package id="System.Text.Encoding.CodePages" version="4.7.0" targetFramework="net48" />
  <package id="System.Text.Encodings.Web" version="4.7.0" targetFramework="net48" />
  <package id="System.Text.Json" version="4.7.0" targetFramework="net48" />
  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
  <package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
</packages>