OASIS Open Document Format for Office Applications (OpenDocument) TC

 View Only

#1 from Arne - 5 July 2026

  • 1.  #1 from Arne - 5 July 2026

    Posted 20 days ago

    Greetings,

    Not for tomorrow but I wanted to share some information I developed on Arne's request for a test suite for our functions in his comments of 5 July 2026. 

    Apparently OOXML doesn't specify a test suite either! 

    Nor do I think it is  good practice for us to specify one. It's hard enough to say a definition correctly once, even harder to do it twice, over hundreds of functions. 

    But, in the interest of completeness, I did ask an AI about third party efforts at such testing. I don't warrant the following answer, only saying it was said:

    *****AI starts here*****

    Because the Office Open XML (OOXML) standard treats spreadsheet formulas as unvalidated text strings, developers building calculation engines cannot rely on Microsoft or the ECMA/ISO standard bodies for validation suites. Instead, cross-compatibility and precision testing for financial and accounting functions (PMT, IRR, XNPV, etc.) are heavily driven by third-party open-source implementations, enterprise components, and headless engines. [1, 2]
    The primary third-party projects and repositories used to validate accounting/financial functions against Excel/OOXML behaviors include:
    1. Handsontable's HyperFormula Engine
    • Project Details: HyperFormula is a headless, high-performance open-source spreadsheet calculation engine built in TypeScript. [1]
    • Relevance to Accounting: It contains a complete implementation of roughly 400 popular spreadsheet functions, meticulously matching Excel's syntax and output outcomes. [1]
    • Validation Value: Its extensive test framework offers some of the most reliable modern test vectors for validating complex financial math (such as cash flows, amortization, and multi-parameter interest functions) outside of a live Microsoft Excel runtime.
    2. The LibreOffice "Calc" Core (ScInterpreter)
    • Project Details: The Document Foundation's LibreOffice Calc source code houses the ScInterpreter component. Calc acts as the de facto open-source baseline for OOXML and ODF compatibility. [1, 2]
    • Relevance to Accounting: Because financial operations require extreme precision (handling floating-point rounding disparities, specific day-count conventions like 30/360 or Actual/365, and payment-at-the-beginning/end variations), LibreOffice's unit test suites explicitly check formula evaluations against known Excel outcomes.
    • Validation Value: Reviewing Calc's automated unit tests (sc/qa/unit/) exposes thousands of rigorous reference tests designed to flag discrepancies between independent engine math and Microsoft Office behavior.
    3. Open XML SDK (Proposed Formula Evaluation Feature)
    • Project Details: The official .NET Open-XML-SDK has historically been limited to file structure manipulation, omitting calculation capabilities. However, community expansions have introduced native formula parsing and validation capabilities. [1, 2]
    • Relevance to Accounting: The feature framework incorporates 650+ test cases encompassing various formula categories. [1]
    • Validation Value: It explicitly tests edge cases, error conditions, and Excel-specific calculation bugs to ensure that independent .NET calculations output the exact string format expected within an OOXML <v> (CellValue) schema node. [1, 2]
    4. ClosedXML (ClosedParser Testing)
    • Project Details: ClosedXML is a widely used .NET library that wraps the Open XML SDK to make file creation easier. They created ClosedParser, an independent high-performance formula engine.
    • Relevance to Accounting: As noted by the maintainers, "OOXML documentation is notoriously inaccurate and not in-line with what Excel actually supports."
    • Validation Value: The project uses automated data pipelines to extract formulas from thousands of real-world corporate spreadsheets, evaluating the calculated outputs against Excel's engine to prevent deviation in accounting formulas. [1]

    *****/AI stops here*****