From 72cf2884d93b508c685a6980e3ddb40751455bb6 Mon Sep 17 00:00:00 2001 From: walon Date: Wed, 27 Oct 2021 15:09:24 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=87=8D=E6=9E=84=E3=80=91=E9=87=8D?= =?UTF-8?q?=E6=9E=84excel=E6=A0=BC=E5=BC=8F=E5=90=8E=E7=9B=B8=E5=BA=94?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86convert=5Fxlsx=E7=9A=84=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/DataConverts/FillSheetVisitor.cs | 4 +- .../Source/DataConverts/TitleCreator.cs | 4 -- .../Source/Generate/ExcelConvertRender.cs | 57 ++++++++++++++----- 3 files changed, 46 insertions(+), 19 deletions(-) diff --git a/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs b/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs index c75afb8..9ec5971 100644 --- a/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs +++ b/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs @@ -266,14 +266,14 @@ namespace Luban.Job.Cfg.DataConverts public int Accept(DVector3 type, Title x) { var v = type.Value; - SetTitleValue(x, $"{v.X}, {v.Y}, {v.Z}"); + SetTitleValue(x, $"{v.X},{v.Y},{v.Z}"); return 1; } public int Accept(DVector4 type, Title x) { var v = type.Value; - SetTitleValue(x, $"{v.X}, {v.Y}, {v.Z}, {v.W}"); + SetTitleValue(x, $"{v.X},{v.Y},{v.Z},{v.W}"); return 1; } diff --git a/src/Luban.Job.Cfg/Source/DataConverts/TitleCreator.cs b/src/Luban.Job.Cfg/Source/DataConverts/TitleCreator.cs index 7f3a607..05f38ab 100644 --- a/src/Luban.Job.Cfg/Source/DataConverts/TitleCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataConverts/TitleCreator.cs @@ -64,10 +64,6 @@ namespace Luban.Job.Cfg.DataConverts { subTitle.Tags.Add("sep", sep); } - if (f.CType.Tags.TryGetValue("multi_rows", out var multiRows)) - { - subTitle.Tags.Add("multiRows", multiRows); - } f.CType.Apply(this, subTitle, startColumn); lastColumn = subTitle.ToIndex; diff --git a/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs b/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs index 72cde4d..91a0eac 100644 --- a/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs @@ -1,6 +1,8 @@ using Luban.Job.Cfg.Cache; using Luban.Job.Cfg.DataConverts; using Luban.Job.Cfg.Utils; +using Luban.Job.Common.Types; +using Luban.Job.Common.TypeVisitors; using Luban.Job.Common.Utils; using SpreadsheetLight; using System; @@ -31,24 +33,38 @@ namespace Luban.Job.Cfg.Generate var title = TitleCreator.Ins.CreateTitle(table); + TBean valueType = table.ValueTType; var dataRangeArray = new List(); + { + var titleRow = new object[title.ToIndex + 1]; + titleRow[0] = "##"; + + foreach (var subTitle in title.SubTitleList) + { + string titleAndTags = subTitle.Tags.Count == 0 ? subTitle.Name : subTitle.Name + "&" + string.Join('&', subTitle.Tags.Select(e => $"{e.Key}={e.Value}")); + titleRow[subTitle.FromIndex] = titleAndTags; + } + dataRangeArray.Add(titleRow); + } + { + + var typeRow = new object[title.ToIndex + 1]; + typeRow[0] = "##type"; + + foreach (var subTitle in title.SubTitleList) + { + string typeAndTags = valueType.Bean.TryGetField(subTitle.Name, out var f, out _) ? + (f.CType.Tags.Count == 0 ? f.CType.Apply(CsDefineTypeName.Ins) : f.CType.Apply(CsDefineTypeName.Ins) + "&" + string.Join('&', f.CType.Tags.Select(e => $"{e.Key}={e.Value}"))) + : ""; + typeRow[subTitle.FromIndex] = typeAndTags; + } + dataRangeArray.Add(typeRow); + } + dataRangeArray.Add(new object[] { "##" }); - var titleRow = new object[title.ToIndex + 1]; - - foreach (var subTitle in title.SubTitleList) - { - string titleAndTags = subTitle.Tags.Count == 0 ? subTitle.Name : subTitle.Name + "&" + string.Join('&', subTitle.Tags.Select(e => $"{e.Key}={e.Value}")); - titleRow[subTitle.FromIndex] = titleAndTags; - } - dataRangeArray.Add(titleRow); - // 注释行1 - dataRangeArray.Add(Array.Empty()); - // 注释行2 - dataRangeArray.Add(Array.Empty()); - int totalRowCount = dataRangeArray.Count; foreach (var rec in records) { @@ -109,6 +125,21 @@ namespace Luban.Job.Cfg.Generate worksheet.SetCellValue(i + 1, j + 1, t); break; } + case double t: + { + worksheet.SetCellValue(i + 1, j + 1, t); + break; + } + case long t: + { + worksheet.SetCellValue(i + 1, j + 1, t); + break; + } + case short t: + { + worksheet.SetCellValue(i + 1, j + 1, t); + break; + } case bool t: { worksheet.SetCellValue(i + 1, j + 1, t);