Merge pull request 'fix bugs' (#752) from fix/fix-bugs into release/v9.4.0

Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/752
This commit is contained in:
Oleg Korshul
2026-04-24 15:51:37 +00:00
4 changed files with 64 additions and 48 deletions

View File

@ -25,15 +25,15 @@
<Filter Include="Common">
<UniqueIdentifier>{02739917-e580-44c9-9b2c-8e80c7a2164d}</UniqueIdentifier>
</Filter>
<Filter Include="Sheets\Reader\XML">
<UniqueIdentifier>{47d28884-9f95-479a-a812-cf3b0e0a6ac9}</UniqueIdentifier>
</Filter>
<Filter Include="Sheets\Reader\CellFormat">
<UniqueIdentifier>{3bf431c7-ab39-40bb-a5ce-dbc6008ae5e5}</UniqueIdentifier>
</Filter>
<Filter Include="Draw">
<UniqueIdentifier>{63d19e50-d1a5-4bc3-802f-062b7213a8a6}</UniqueIdentifier>
</Filter>
<Filter Include="Sheets\CellFormat">
<UniqueIdentifier>{3bf431c7-ab39-40bb-a5ce-dbc6008ae5e5}</UniqueIdentifier>
</Filter>
<Filter Include="Sheets\XML">
<UniqueIdentifier>{47d28884-9f95-479a-a812-cf3b0e0a6ac9}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Binary\Document\BinWriter\BinaryWriterD.cpp">
@ -115,43 +115,43 @@
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\XMLReader\columnNameController.cpp">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\XMLReader\XLSXTableController.cpp">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\XMLReader\XML2TableConverter.cpp">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\XMLReader\XMLConverter2.cpp">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\XMLReader\XMLMap.cpp">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\XMLReader\XMLReader.cpp">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\XMLReader\XMLReader2.cpp">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\CellFormatController\CellFormatController.cpp">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\CellFormatController\CurrencyReader.cpp">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\CellFormatController\DateReader.cpp">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\CellFormatController\DigitReader.cpp">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\ChartFromToBinary.cpp">
<Filter>Sheets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Sheets\Reader\CellFormatController\LocalInfo.cpp">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Binary\Document\DocWrapper\ChartSerializer.cpp" />
<ClCompile Include="..\..\..\Binary\Document\DocWrapper\DocxSerializer.cpp" />
@ -269,40 +269,40 @@
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\XMLReader\columnNamesController.h">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\XMLReader\XLSXTableController.h">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\XMLReader\XML2TableConverter.h">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\XMLReader\XMLConverter2.h">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\XMLReader\XMLMap.h">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\XMLReader\XMLReader.h">
<Filter>Sheets\Reader\XML</Filter>
<Filter>Sheets\XML</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\CellFormatController\CellFormatController.h">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\CellFormatController\CurrencyReader.h">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\CellFormatController\DateReader.h">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\CellFormatController\DigitReader.h">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\ChartFromToBinary.h">
<Filter>Sheets</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Sheets\Reader\CellFormatController\LocalInfo.h">
<Filter>Sheets\Reader\CellFormat</Filter>
<Filter>Sheets\CellFormat</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Binary\Document\DocWrapper\DocxSerializer.h" />
<ClInclude Include="..\..\..\Binary\Document\DocWrapper\FontProcessor.h" />

View File

@ -59,7 +59,7 @@ namespace OOX
writer.WriteString(L"<person");
WritingStringNullableAttrEncodeXmlString(L"displayName", displayName, *displayName);
WritingStringNullableAttrString(L"id", id, *id);
WritingStringNullableAttrString(L"userId", userId, *userId);
WritingStringNullableAttrEncodeXmlString(L"userId", userId, *userId);
WritingStringNullableAttrEncodeXmlString(L"providerId", providerId, *providerId);
writer.WriteString(L"/>");
}

View File

@ -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());

View File

@ -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;