Skip to content

LiteExcel v2.4.79

Latest

Choose a tag to compare

@JackZ695 JackZ695 released this 28 Sep 12:47
· 2 commits to main since this release

LiteExcel v2.4.79

零第三方依赖的 .NET Excel 读写库 · net48 + net8.0 · MIT
本版聚焦代码稳定化收口:修正对象模型行号模型、样式往返边界、XLSB 高级部件保护,以及 XLSB verbatim 伪降级。
Fixed

  • 对象模型稀疏行绝对行号对齐(C1)
    Worksheet 单元格网格与 SheetData 统一为绝对 Excel 行号语义(新增 SheetData.RowNumbers 记录每行原始 1-based 行号)。修复打开含前导空行 / 内部空行的工作表后单元格错位;RowHeights、Filter.HiddenRows 现按绝对行号精确映射,MergedRanges 同步对齐。
  • 打开文件不再覆盖文档属性 Modified(C2)
    Workbook.FromSheetData 不再触发 OnWorksheetAdded;打开已有文件后读回的 WorkbookProperties.Modified 保持文件原值。
  • sheet 级样式恢复边界明确(C3)
    DefaultStyle 改为按「数据区单元格样式一致」的启发式推断恢复(非严格往返保证);新增 HeaderStyle 低层 SheetData.Headers 路径往返,对象模型 Save→Open 不保证恢复(设计限制)。
  • XLSB 高级部件保护缺口(Complex XLSB)
    源含工作簿级高级部件(xl/connections.bin / xl/model/item.data 等)且操作无法走 verbatim / surgical delete / surgical edit 保真路径时,现一律经 SaveDegradations 上报(宽松模式)或抛 LiteExcelException 阻止(严格模式),不再因「无法保真的修改落在非高级工作表」而静默回退整本重建、产出 Excel 无法打开的文件。
  • XLSB verbatim 伪降级(R-1)
    XlsbWriter 仅在重建 / 转换路径上报降级;无修改的 verbatim 保存不再误报 NamedRanges / DocumentProperties / Styles 降级(这些部件在 verbatim 路径逐字节保留)。
    Changed
  • Worksheet.FirstRowNumber:setter 标注 [Obsolete(error: false)];对象模型 Save 不使用该属性做行位移(对象模型按绝对行号写入;getter 仍反映打开文件的原始首行号)。
  • Worksheet.RowStyles:写出侧正确(按绝对行索引应用);对象模型 Open 不恢复 Worksheet.RowStyles(行级样式效果经 Cell.Style 保留)。
    Tests
  • 新增 C1–C3 / FirstRowNumber / RowStyles / Complex XLSB guard / R-1 回归测试。
  • 全量 770 测试通过(net8.0);net48 构建通过。
    Compatibility
  • 目标框架:net48;net8.0;零第三方运行时依赖;公开 API 兼容 Native AOT。
  • FirstRowNumber 的 setter 已标记 Obsolete(编译期警告,非破坏);如从第 N 行开始,请直接写入第 N 行。