From 21676657a5b1b140de8321dfdbe47618893dffc1 Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 5 Nov 2021 11:36:39 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=B0=83=E6=95=B4=E3=80=91=E7=94=B1?= =?UTF-8?q?=E4=BA=8E=20spreedsheet=E5=9C=A8mac=E4=B8=8B=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E5=B7=A5=E4=BD=9C=EF=BC=8C=E6=8D=A2=E6=88=90?= =?UTF-8?q?ClosedXml=E5=BA=93=E3=80=82=20=E3=80=90=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E3=80=91=E4=BF=AE=E5=A4=8D=20LubanAssistant=20=E7=9A=84?= =?UTF-8?q?=E7=BC=96=E8=AF=91bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Luban.Job.Cfg/Luban.Job.Cfg.csproj | 2 +- .../Source/Generate/ExcelConvertRender.cs | 113 +----------------- src/Luban.Job.Common/Source/Utils/DefUtil.cs | 7 +- 3 files changed, 13 insertions(+), 109 deletions(-) diff --git a/src/Luban.Job.Cfg/Luban.Job.Cfg.csproj b/src/Luban.Job.Cfg/Luban.Job.Cfg.csproj index ecaa4ac..c0e8cdd 100644 --- a/src/Luban.Job.Cfg/Luban.Job.Cfg.csproj +++ b/src/Luban.Job.Cfg/Luban.Job.Cfg.csproj @@ -12,9 +12,9 @@ + - diff --git a/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs b/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs index 91a0eac..ca1048b 100644 --- a/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/ExcelConvertRender.cs @@ -1,10 +1,10 @@ -using Luban.Job.Cfg.Cache; +using ClosedXML.Excel; +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; using System.Collections.Generic; using System.IO; @@ -72,112 +72,11 @@ namespace Luban.Job.Cfg.Generate totalRowCount += rec.Data.Apply(fillVisitor, title); } - - - //var memoryStream = new MemoryStream(); - //using (var package = new ExcelPackage(memoryStream)) - //{ - // var sheet = package.Workbook.Worksheets.Add("sheet1"); - // for (int i = 0; i < dataRangeArray.Count; i++) - // { - // var rawRow = dataRangeArray[i]; - // sheet.Cells[i + 1, 1, i + 1, rawRow.Length].FillList(rawRow); - // } - // sheet.Cells.AutoFitColumns(); - // content = package.GetAsByteArray(); - //} - - var worksheet = new SLDocument(); - //var rows = new List(); - //for (int i = 0; i < dataRangeArray.Count; i++) - //{ - // var rawRow = dataRangeArray[i]; - // var cells = new List(); - // for (int j = 0; j < rawRow.Length; j++) - // { - // cells.Add(new Cell(j + 1, rawRow[j])); - // } - // rows.Add(new Row(i + 1, cells)); - //} - //worksheet.Rows = rows; - for (int i = 0; i < dataRangeArray.Count; i++) - { - var rawRow = dataRangeArray[i]; - for (int j = 0; j < rawRow.Length; j++) - { - object v = dataRangeArray[i][j]; - if (v != null) - { - switch (v) - { - case int t: - { - worksheet.SetCellValue(i + 1, j + 1, t); - break; - } - case string t: - { - worksheet.SetCellValue(i + 1, j + 1, t); - break; - } - case float t: - { - 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); - break; - } - case DateTime t: - { - - worksheet.SetCellValue(i + 1, j + 1, t); - break; - } - default: - { - worksheet.SetCellValue(i + 1, j + 1, v.ToString()); - break; - } - } - } - } - } - worksheet.AutoFitColumn(1, title.ToIndex + 1); - worksheet.AutoFitRow(1, dataRangeArray.Count); + using var workbook = new XLWorkbook(XLEventTracking.Disabled); + var sheet = workbook.AddWorksheet(); + sheet.Cell(1, 1).InsertData(dataRangeArray); var stream = new MemoryStream(); - worksheet.SaveAs(stream); - - - - //var tempFile = $"{Path.GetTempFileName()}_{fileName}.tmp"; - //var outputFile = $"{Path.GetTempFileName()}_{fileName}.xlsx"; - //var outputStream = new FileStream(tempFile, FileMode.CreateNew, FileAccess.ReadWrite); - //var writer = ExcelDataWriter.ExcelDataWriter.GetAsByteArray(dataRangeArray, new ExcelDataWriter.ClassMap()); - //using (FastExcel.FastExcel fastExcel = new FastExcel.FastExcel(new System.IO.FileInfo(tempFile), new System.IO.FileInfo(outputFile))) - //{ - // // Write the data - // fastExcel.Write(worksheet, "sheet1"); - //} - //outputStream.Close(); - //outputStream.Flush(); + workbook.SaveAs(stream); byte[] content = DataUtil.StreamToBytes(stream); var md5 = CacheFileUtil.GenStringOrBytesMd5AndAddCache(filePath, content); FileRecordCacheManager.Ins.AddCachedRecordOutputData(table, records, genType, md5); diff --git a/src/Luban.Job.Common/Source/Utils/DefUtil.cs b/src/Luban.Job.Common/Source/Utils/DefUtil.cs index 10c4ab4..928ac82 100644 --- a/src/Luban.Job.Common/Source/Utils/DefUtil.cs +++ b/src/Luban.Job.Common/Source/Utils/DefUtil.cs @@ -171,7 +171,12 @@ namespace Luban.Job.Common.Utils case ELanguage.JS: case ELanguage.TYPESCRIPT: case ELanguage.PYTHON: - case ELanguage.RUST: return System.Web.HttpUtility.HtmlEncode(comment).Replace("\n", "
"); + case ELanguage.RUST: +#if !LUBAN_LITE + return System.Web.HttpUtility.HtmlEncode(comment).Replace("\n", "
"); +#else + throw new NotSupportedException(); +#endif default: throw new Exception($"unknown language:{curLan}"); } }