diff --git a/OOXML/Projects/Windows/BinaryFormatLib/BinaryFormatLib.vcxproj.filters b/OOXML/Projects/Windows/BinaryFormatLib/BinaryFormatLib.vcxproj.filters index e9b87ab6db..be7b54f539 100644 --- a/OOXML/Projects/Windows/BinaryFormatLib/BinaryFormatLib.vcxproj.filters +++ b/OOXML/Projects/Windows/BinaryFormatLib/BinaryFormatLib.vcxproj.filters @@ -25,15 +25,15 @@ {02739917-e580-44c9-9b2c-8e80c7a2164d} - - {47d28884-9f95-479a-a812-cf3b0e0a6ac9} - - - {3bf431c7-ab39-40bb-a5ce-dbc6008ae5e5} - {63d19e50-d1a5-4bc3-802f-062b7213a8a6} + + {3bf431c7-ab39-40bb-a5ce-dbc6008ae5e5} + + + {47d28884-9f95-479a-a812-cf3b0e0a6ac9} + @@ -115,43 +115,43 @@ Common - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\CellFormat + Sheets\CellFormat - Sheets\Reader\CellFormat + Sheets\CellFormat - Sheets\Reader\CellFormat + Sheets\CellFormat - Sheets\Reader\CellFormat + Sheets\CellFormat Sheets - Sheets\Reader\CellFormat + Sheets\CellFormat @@ -269,40 +269,40 @@ Common - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\XML + Sheets\XML - Sheets\Reader\CellFormat + Sheets\CellFormat - Sheets\Reader\CellFormat + Sheets\CellFormat - Sheets\Reader\CellFormat + Sheets\CellFormat - Sheets\Reader\CellFormat + Sheets\CellFormat Sheets - Sheets\Reader\CellFormat + Sheets\CellFormat diff --git a/OOXML/XlsxFormat/Comments/ThreadedComments.cpp b/OOXML/XlsxFormat/Comments/ThreadedComments.cpp index 15aba7fc93..88d606d859 100644 --- a/OOXML/XlsxFormat/Comments/ThreadedComments.cpp +++ b/OOXML/XlsxFormat/Comments/ThreadedComments.cpp @@ -59,7 +59,7 @@ namespace OOX writer.WriteString(L""); } diff --git a/OOXML/XlsxFormat/SharedStrings/Text.cpp b/OOXML/XlsxFormat/SharedStrings/Text.cpp index 26d69a53d1..8ef512a6a5 100644 --- a/OOXML/XlsxFormat/SharedStrings/Text.cpp +++ b/OOXML/XlsxFormat/SharedStrings/Text.cpp @@ -102,7 +102,7 @@ namespace OOX return; } - if(SimpleTypes::Spreadsheet::celltypeStr == eType || SimpleTypes::Spreadsheet::celltypeInlineStr == eType) + if(SimpleTypes::Spreadsheet::celltypeStr == eType || SimpleTypes::Spreadsheet::celltypeInlineStr == eType || SimpleTypes::Spreadsheet::celltypeDate == eType) { m_bIsInit = true; m_oValue.fromXML(oReader, SimpleTypes::xmlspacePreserve == m_oSpace.GetValue()); diff --git a/OOXML/XlsxFormat/Worksheets/SheetData.cpp b/OOXML/XlsxFormat/Worksheets/SheetData.cpp index 3d9549c70d..efede76095 100644 --- a/OOXML/XlsxFormat/Worksheets/SheetData.cpp +++ b/OOXML/XlsxFormat/Worksheets/SheetData.cpp @@ -45,6 +45,7 @@ #include "../ComplexTypes_Spreadsheet.h" #include "../../Binary/Presentation/BinaryFileReaderWriter.h" +#include "../../Binary/Sheets/Reader/CellFormatController/DateReader.h" #include "../../Binary/Sheets/Writer/CSVWriter.h" #include "../../../DesktopEditor/common/StreamWriter.h" #include "../../../DesktopEditor/common/StringExt.h" @@ -646,7 +647,7 @@ namespace OOX } void CCellXLSB::toXLSB(NSBinPptxRW::CXlsbBinaryWriter& oStream) { - _INT16 nType = XLSB::rt_CellBlank; + _INT16 nType = XLSB::rt_CellSt; if(m_oFormula.m_bIsInit && SimpleTypes::Spreadsheet::celltypeSharedString == m_oType.GetValue()) { m_oType.SetValue(SimpleTypes::Spreadsheet::celltypeError); @@ -662,8 +663,20 @@ namespace OOX case SimpleTypes::Spreadsheet::celltypeSharedString: nType = XLSB::rt_CellIsst; break; case SimpleTypes::Spreadsheet::celltypeError: nType = XLSB::rt_CellError; break; case SimpleTypes::Spreadsheet::celltypeBool: nType = XLSB::rt_CellBool; break; + case SimpleTypes::Spreadsheet::celltypeDate: + { + std::wstring tmp(m_oValue.m_oValue.m_sBuffer, m_oValue.m_oValue.m_nLen); + DateReader dateChecker; + double result = 0; + bool bTime = false, bDate = false; + if (dateChecker.GetDigitalDate(tmp, result, bDate, bTime)) + { + nType = XLSB::rt_CellReal; + m_oValue.m_dValue = result; + } + }break; case SimpleTypes::Spreadsheet::celltypeInlineStr: - case SimpleTypes::Spreadsheet::celltypeStr: nType = XLSB::rt_CellSt; break; + case SimpleTypes::Spreadsheet::celltypeStr: nType = XLSB::rt_CellSt; break; } } bool bIsBlankFormula = false; @@ -730,28 +743,31 @@ namespace OOX oStream.XlsbStartRecord(nType, nLen); oStream.WriteULONG(m_nCol & 0x3FFF); - oStream.WriteULONG(nFlags2); //todo RkNumber - switch(nType) + switch (nType) { - case XLSB::rt_CellReal: - case XLSB::rt_FmlaNum: + case XLSB::rt_CellReal: + case XLSB::rt_FmlaNum: + { oStream.WriteDoubleReal(m_oValue.m_dValue); - break; - case XLSB::rt_CellIsst: + }break; + case XLSB::rt_CellIsst: + { oStream.WriteULONG(m_oValue.m_nValue); - break; - case XLSB::rt_CellSt: - case XLSB::rt_FmlaString: + }break; + case XLSB::rt_CellSt: + case XLSB::rt_FmlaString: + { oStream.WriteStringData(m_oValue.m_oValue.m_sBuffer, m_oValue.m_oValue.m_nLen); - break; - case XLSB::rt_CellError: - case XLSB::rt_FmlaError: - case XLSB::rt_CellBool: - case XLSB::rt_FmlaBool: + }break; + case XLSB::rt_CellError: + case XLSB::rt_FmlaError: + case XLSB::rt_CellBool: + case XLSB::rt_FmlaBool: + { oStream.WriteBYTE(m_oValue.m_nValue); - break; + }break; } _UINT16 nFlags = 0;