Where do .ods files show the Calc version used to create or generate the last save?

There’s a huge archive of files here. Some may be useful for debugging and bug reports today.
I consulted File Properties on files from 2016, 2017 etcetera and am surprised that the Calc version used to create/modify/save the file the last time (it’s last modified date) is absent. Am I looking in the right place?

You don’t say which version of LO you are using. I am using v6.4.6.2 and for a file from Jan 2018 File Properties lists the date/time (and user) for both the Creation and Modified events. It is possible that some of the information was not recorded in some earlier versions, and therefore would not be available now even in a recent version of LO.

Yes, thankyou. I’m using LO Calc

To help the Bug reporting debugging activity, much older files are needed that may have been created and saved with 4.1 or 5 for example. I can search the archives by year of course, yet it’s the version that’s needed. Sometimes the “Bug” leaves an error in the file. Samples provided on the Bug reporting open correctly with one Calc version, not another. That way we may be able establish a more precise statement of regression (which is version-used-dependent). I don’t know if “version-used” was ever noted in the .ods format. Hope so! Somewhere!


as far as I know the only way to get the generator of an ODF is to:

  • unzip the ODF zip container (e.g. unzip myspreadsheet.ods)
  • open file meta.xml
  • Search for line starting with <meta:generator>


<?xml version="1.0" encoding="UTF-8"?> 


        <meta:generator>LibreOffice/$Linux_X86_64 LibreOffice_project/3d775be2011f3886db32dfd395a6a6d1ca2630ff</meta:generator>



Thank you very much. I’ll give that a go and, of course, share what happens. I’ll be at it tomorrow, Monday.

Excellent. ODF file placed on Researchgate for all to download in 2016 gives
meta:generatorLibreOffice/$Linux_X86_64 LibreOffice_project/00m0$Build-2

It seems there’s much to learn in the Object folders too.
Thankyou very much (from France)

To avoid the need of using an unzipper, but accepting the need to open the file(s), you can rely on user code.

Function sourceFileGenerator(Optional pDoc As Object)
If IsMissing(pDoc) Then pDoc = ThisComponent
sourceFileGenerator = pDoc.DocumentProperties.Generator
End Function

Sub showSourceFileGenerator(Optional pDoc As Object)
If IsMissing(pDoc) Then pDoc = ThisComponent
r = sourceFileGenerator(pDoc)
If r = "" Then
  msg = "This document was not loaded from a file." & Chr(10) &_
        "Its title is: " & pDoc.Title
  msg = "The file the document" & Chr(10) & pDoc.Title & Chr(10) &_
        "was loaded from was saved with/on:" & Chr(10) & r
End If
ans = MsgBox(msg, 0, "You asked...")
End Sub  

(You may also write a few additional lines of code to batch-process folders containing the mentioned files.)

Able to create a catalogue?! Wonderful. I’ll give that a go.