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;