Skip to content

V26.9.0

Latest

Choose a tag to compare

@laurence-chen laurence-chen released this 01 Sep 08:56

Highlights

  • Added PDF export support through SaveFormat.Pdf, PdfSaveOptions, and a SkiaSharp-based rendering pipeline.
  • Added rich-text cell APIs and shared-string rich-text round-tripping so formatted string runs can be loaded, edited, and saved.
  • Improved display-text formatting fidelity for General numeric output and locale-sensitive date formatting.

Added

  • Added SaveFormat.Pdf and the public PdfSaveOptions type for XLSX-to-PDF export.
  • Added automatic PDF format selection in Workbook.Save(string fileName) when the output path ends with .pdf.
  • Added Cell.Characters(int startIndex, int length), Cell.GetCharacters(), Cell.SetCharacters(FontSetting[] characters), and Cell.IsRichText() for rich-text string ranges.
  • Added the public FontSetting type to represent per-range rich-text font settings within a cell.
  • Added rich-text-capable shared-string parsing and serialization so shared strings can preserve formatted runs instead of flattening to plain text.
  • Added samples/Aspose.Cells_FOSS.Samples.PdfConversion to convert .xlsx files under samples/files to matching .pdf outputs.
  • Added License/SkiaSharp.LICENSE.txt and License/ThirdPartyNotices.txt for third-party license and attribution compliance.

Changed

  • Changed SaveOptions from sealed to inheritable so specialized save options such as PdfSaveOptions can extend it.
  • Workbook save failures now report the more format-agnostic message Failed to save workbook. instead of an XLSX-only error string.
  • General-format numeric display now rounds floating-point and decimal values to 15 significant digits, reducing binary floating-point artifacts in displayed text.
  • Built-in date and date-time display formatting for formats 14 and 22 now honors the caller-supplied culture when a non-invariant workbook culture is used.
  • Date-format display logic now avoids unintentionally localizing textual month tokens unless the format explicitly carries a locale directive.
  • The loading sample now resolves samples/files/sample.xlsx from the repository root instead of depending on a project-local sample.xlsx copy.
  • Sample documentation was refreshed to include the PDF conversion sample and its repository-based input convention.

Improved Compatibility

  • PDF export uses worksheet page setup settings for paper size, orientation, and pagination behavior, aligning the public workflow more closely with Aspose.Cells conventions.
  • Rich-text runs in inline strings and shared strings now round-trip with font name, size, bold, italic, underline, strikeout, and color metadata preserved more faithfully.
  • Shared-string interning now distinguishes entries by both text and rich-text formatting runs, reducing accidental coalescing of differently formatted strings.
  • General-format cell display text is less likely to expose IEEE-754 artifacts such as trailing binary rounding noise.
  • Locale-sensitive built-in date display behaves more like spreadsheet viewers when rendering with a real machine culture.
  • Drawing and worksheet loaders now retain additional drawing metadata such as drawing object identifiers, connector endpoint metadata, and preserved SmartArt drawing payloads, improving downstream fidelity for rendering and save.
  • Picture loading and archive helpers were expanded alongside the new PDF/export path so workbook assets referenced from packages are resolved more consistently.

Potential Breaking Changes

  • SaveOptions is no longer sealed, which is source-compatible for most consumers but changes the type's inheritance behavior.
  • Calling Workbook.Save("output.pdf") now exports PDF automatically based on the file extension, whereas earlier versions always followed the default XLSX save path.
  • Display text produced under the General format or under built-in date formats 14 and 22 may differ from earlier versions because of the new rounding and culture-handling logic.
  • Shared strings that previously collapsed to plain text can now serialize as rich-text entries when formatting runs are present, which changes emitted OOXML for those cells.