3.0 1992 Excel 4.0 1993 Excel 5.0 (Office 4.2 & 4.3, also a 32-bit version for Windows NT only on the x86, PowerPC, Alpha, and MIPS architectures) This version of Excel includes a DOOM-like game as an Easter Egg. 1995 Excel for Windows 95 (version 7.0) included in Office 95 1997 Excel 97 (version 8.0) included in Office 97 (for x86 and Alpha). This version of Excel includes a flight simulator as an Easter Egg. 1999 Excel 2000 (version 9.0) included in Office 2000 2001 Excel 2002 (version 10) included in Office XP 2003 Office Excel 2003 (version 11) included in Office 2003 2007 Office Excel 2007 (version 12) included in Office 2007 2010 Excel 2010 (version 14) included in Office 2010 2013 Excel 2013 (version 15) included in Office 2013
Technical Committee TC45, where it was standardized to become ECMA-376, approved in December 2006 Office Open XML (also informally known as OOXML or OpenXML) is a zipped, XML-based file format developed by Microsoft for representing spreadsheets, charts, presentations and word processing documents.
was controversial and embittered, with much discussion both about the specification and about the standardization process. According to InfoWorld: OOXML was opposed by many on grounds it was unneeded, as software makers could use OpenDocument Format (ODF), a less complicated office software format that was already an international standard. — InfoWorld
blob Supports internationalization, as long as you’re using US English Workbook/worksheet protection can be removed by editing an XML file attribute Every XML file produced by Excel is 1 (long) line
Excel has an historical bug on year 1900 if you’re on a Mac, where you have to consider it as a leap year (yes, really) Date detection relies mostly on finding ‘y’, ‘m’ or ‘d’ in the number format string of a given cell (yes, really)
"""Convert from Python date to Excel JD.""" # explicitly disallow bad years # Excel 2000 treats JD=0 as 1/0/1900 (buggy, disallow) # Excel 2000 treats JD=2958466 as a bad date (Y10K bug!) if year < 1900 or year > 10000: msg = 'Year not supported by Excel: %s' % year raise ValueError(msg) if self.excel_base_date == CALENDAR_WINDOWS_1900: # Fudge factor for the erroneous fact that the year 1900 is # treated as a Leap Year in MS Excel. This affects every date # following 28th February 1900 if year == 1900 and month <= 2: excel_1900_leap_year = False else: excel_1900_leap_year = True excel_base_date = 2415020 elif self.excel_base_date == CALENDAR_MAC_1904: excel_base_date = 2416481 excel_1900_leap_year = False else: raise NotImplementedError('base date supported.')
docProps/core.xml (mandatory as described in the specs) and in xl/workbook.xml (optional) GnuCalc will only write in xl/docProps/core.xml MS Excel only puts it in xl/workbook.xml and will only read from there Implementation: read from everywhere