There is a github repo set up for Advanced Excel and a fork of the EPPlus library so feel free to contribute with pull requests:1. https://github.com/HannoCoetzee/EPPlus (LGPL licence)2. https://github.com/HannoCoetzee/outsystems_advancedexcel
Notice: This component takes advantage of private and undocumented Platform APIs, which can change without notice. As a result, this component may unexpectedly break as the Platform is upgraded. We advise proper testing to ensure that your applications continue to work as expected when upgrading/patching the Platform.
Fixes
Workbook_Open — file branch left junk files and locked them.File.Open(path, FileMode.OpenOrCreate) silently created a 0-byte file on a typo'd path (then EPPlus failed with a cryptic "central directory not found"), and the FileStream was never disposed, so the file stayed locked by the app-pool process until GC.Now uses FileMode.Open / FileAccess.Read / FileShare.Read and disposes the stream via using.
Workbook_Open
File.Open(path, FileMode.OpenOrCreate)
FileStream
FileMode.Open
FileAccess.Read
FileShare.Read
using
ConditionalFormatting_DeleteRule deleted the wrong rule.The guard requires index >= 1, but ExcelConditionalFormattingCollection.RemoveAt(...) is a standard 0-based collection. So the first rule could never be deleted (it would remove rule 2), and every other index was off by one.
ConditionalFormatting_DeleteRule
index >= 1
ExcelConditionalFormattingCollection.RemoveAt(...)
Cell_WriteImageByIndex / Cell_WriteImageByName placed the image one cell down-right.EPPlus's ExcelPicture.SetPosition(row, …, col, …) takes a 0-based anchor. The wrapper passed the OutSystems 1-based row/column raw, so writing to A4 actually landed at B5. Image_Insert already converted correctly (range.Start.Row - 1); this brings the two image actions in line.
Cell_WriteImageByIndex
Cell_WriteImageByName
ExcelPicture.SetPosition(row, …, col, …)
A4
B5
Image_Insert
range.Start.Row - 1
Minor cleanup: stray double semicolon in Column_Hide_Show and a dead STDataSeriesStructure curr_series local in Chart_Create.
Column_Hide_Show
STDataSeriesStructure curr_series
Chart_Create