From d9b7feb91270af37c57bb2b15e2b4014e4071ba4 Mon Sep 17 00:00:00 2001 From: Debao Zhang Date: Thu, 29 Aug 2013 09:48:56 +0800 Subject: [PATCH] Add date1904 option for workbook Excel for Windows uses a default epoch of 1900 and Excel for Mac uses an epoch of 1904. However, Excel on either platform will convert automatically between one system and the other. QtXlsxWriter stores dates in the 1900 format by default. --- src/xlsxworkbook.cpp | 20 ++++++++++++++++++++ src/xlsxworkbook.h | 5 ++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/xlsxworkbook.cpp b/src/xlsxworkbook.cpp index 478fadf..0930424 100755 --- a/src/xlsxworkbook.cpp +++ b/src/xlsxworkbook.cpp @@ -45,6 +45,7 @@ Workbook::Workbook(QObject *parent) : m_window_height = 9660; m_strings_to_numbers_enabled = false; + m_date1904 = false; m_activesheet = 0; m_firstsheet = 0; m_table_count = 0; @@ -77,6 +78,23 @@ void Workbook::save(const QString &name) package.createPackage(name); } +bool Workbook::isDate1904() const +{ + return m_date1904; +} + +/* + Excel for Windows uses a default epoch of 1900 and Excel + for Mac uses an epoch of 1904. However, Excel on either + platform will convert automatically between one system + and the other. QtXlsxWriter stores dates in the 1900 format + by default. +*/ +void Workbook::setDate1904(bool date1904) +{ + m_date1904 = date1904; +} + /* Enable the worksheet.write() method to convert strings to numbers, where possible, using float() in order to avoid @@ -148,6 +166,8 @@ void Workbook::saveToXmlFile(QIODevice *device) // writer.writeAttribute("codeName", "{37E998C4-C9E5-D4B9-71C8-EB1FF731991C}"); writer.writeEmptyElement("workbookPr"); + if (m_date1904) + writer.writeAttribute("date1904", "1"); writer.writeAttribute("defaultThemeVersion", "124226"); writer.writeStartElement("bookViews"); diff --git a/src/xlsxworkbook.h b/src/xlsxworkbook.h index d84d064..4c727ed 100755 --- a/src/xlsxworkbook.h +++ b/src/xlsxworkbook.h @@ -48,6 +48,9 @@ public: Format *addFormat(); // void addChart(); void defineName(const QString &name, const QString &formula); + bool isDate1904() const; + void setDate1904(bool date1904); + bool isStringsToNumbersEnabled() const; void setStringsToNumbersEnabled(bool enable=true); void save(const QString &name); @@ -59,13 +62,13 @@ private: QList worksheets() const; SharedStrings *sharedStrings(); Styles *styles(); - bool isStringsToNumbersEnabled() const; void saveToXmlFile(QIODevice *device); SharedStrings *m_sharedStrings; QList m_worksheets; Styles *m_styles; bool m_strings_to_numbers_enabled; + bool m_date1904; int m_x_window; int m_y_window;