ANNOUNCE: ooxml 1.13.2 released
===============================

ooxml is a pure Tcl extension for reading and writing ECMA-376 Office Open XML files: it reads and writes Excel .xlsx spreadsheets and creates Word .docx documents. Developed by Alexander Schoepe with contributions by Rolf Ade, Harald Oehlmann, Miguel Bañón and Steve Landers, it requires only Tcl 8.6.7+ and tdom.

1.13.2 is a maintenance release: it corrects two details of the generated .xlsx files, fixes a docx corner case, and makes the test suite run on Windows and on a plain Tcl plus tdom installation.

Download / Repository: https://fossil.sowaswie.de/ooxml


English
-------

Fixes since 1.13.1:

* Hyperlinks: a worksheet with the same URL in several cells produced a separate relationship entry per cell. The writer now creates one relationship per unique URL and lets the cells share its rId. Tooltips remain per cell, so different tooltips on the same URL still work.
* Shared strings: the count attribute of the sst element now holds the total number of string references in the workbook, while uniqueCount keeps the number of unique strings. Previously both carried the unique count, which does not match ECMA-376.
* docx: passing the empty string as the optional "start from" document to ooxml::docx::docx now yields the same empty document as omitting the argument altogether, instead of failing.

Tests:

* The docx tests and the ECMA-376 validator no longer call the external unzip program. They read the generated packages through ooxml's own built-in zip reader, so the whole suite now also runs on Windows, where unzip is not available.
* The xlsx tests no longer mount the archive themselves via tclvfs or zipfs but use the ::ooxml::Zip* helpers as well. Together with the built-in zip reader introduced in 1.13 the suite therefore runs on a plain Tcl plus tdom installation, without tcllib or tclvfs.
* The date checks of the core properties are computed instead of hardcoded, so they no longer depend on the timezone of the machine, and the invalid-UTF8 check matches the message of the built-in reader.
* Verified on Tcl 8.6.18, 9.0.4 and 9.1b0 in several timezones.

Thanks to Steve Landers for the hyperlink, shared strings and test fixes, to Paul for reporting the failing tests on Windows, and to Rolf Ade for the docx fix.


Deutsch
-------

Fehlerbehebungen seit 1.13.1:

* Hyperlinks: Ein Arbeitsblatt mit derselben URL in mehreren Zellen erzeugte pro Zelle einen eigenen Relationship-Eintrag. Der Writer legt jetzt eine Relationship je eindeutiger URL an, die Zellen teilen sich deren rId. Tooltips bleiben zellbezogen, unterschiedliche Tooltips bei gleicher URL funktionieren also weiterhin.
* Shared Strings: Das count-Attribut des sst-Elements enthält jetzt die Gesamtzahl der String-Referenzen in der Arbeitsmappe, uniqueCount weiterhin die Anzahl der eindeutigen Strings. Zuvor trugen beide den Wert für die eindeutigen Strings, was nicht ECMA-376 entspricht.
* docx: Wird ooxml::docx::docx als optionales "start from"-Dokument ein leerer String übergeben, entsteht jetzt dasselbe leere Dokument wie ganz ohne dieses Argument, statt mit einem Fehler abzubrechen.

Tests:

* Die docx-Tests und der ECMA-376-Validator rufen nicht mehr das externe Programm unzip auf. Sie lesen die erzeugten Pakete über ooxmls eigenen eingebauten Zip-Reader, damit läuft die gesamte Suite jetzt auch unter Windows, wo unzip nicht zur Verfügung steht.
* Auch die xlsx-Tests mounten das Archiv nicht mehr selbst über tclvfs oder zipfs, sondern nutzen ebenfalls die ::ooxml::Zip*-Helfer. Zusammen mit dem in 1.13 eingeführten eingebauten Zip-Reader läuft die Suite damit auf einer reinen Tcl-plus-tdom-Installation, ohne tcllib oder tclvfs.
* Die Datumsprüfungen der Core-Properties werden berechnet statt fest verdrahtet und hängen damit nicht mehr von der Zeitzone des Rechners ab; die Prüfung auf ungültiges UTF-8 passt zur Meldung des eingebauten Readers.
* Geprüft mit Tcl 8.6.18, 9.0.4 und 9.1b0 in mehreren Zeitzonen.

Dank an Steve Landers für die Korrekturen an Hyperlinks, Shared Strings und Tests, an Paul für die Meldung der unter Windows fehlschlagenden Tests und an Rolf Ade für den docx-Fix.
