Skip to content

Commit

Permalink
fix convert to xlsb
Browse files Browse the repository at this point in the history
ElenaSubbotina committed Mar 2, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent aad25c3 commit d88fc23
Showing 1 changed file with 20 additions and 37 deletions.
57 changes: 20 additions & 37 deletions X2tConverter/src/lib/xlsx.h
Original file line number Diff line number Diff line change
@@ -157,41 +157,36 @@ namespace NExtractTools
convertParams.m_bTempIsXmlOptions = false;
return nRes;
}
_UINT32 xlst_bin2xlsb_dir(const std::wstring& sFrom, const std::wstring& sTo, InputParams& params, ConvertParams& convertParams)
_UINT32 xlsx_dir2xlsb_dir(const std::wstring& sFrom, const std::wstring& sTo, InputParams& params, ConvertParams& convertParams)
{
_UINT32 nRes = 0;

std::wstring sTargetBin;
if (params.getFromChanges())
{
params.setFromChanges(false);
nRes = apply_changes(sFrom, sTo, NSDoctRenderer::DoctRendererFormat::FormatFile::XLST, sTargetBin, params, convertParams);
}
else
sTargetBin = sFrom;
const OOX::CPath oox_path(sFrom);

BinXlsxRW::CXlsxSerializer oCXlsxSerializer;
OOX::Spreadsheet::CXlsb oXlsb;
oXlsb.m_bWriteToXlsb = true;
oXlsb.Read(oox_path);

oCXlsxSerializer.setMacroEnabled(params.m_bMacro);
oCXlsxSerializer.setIsNoBase64(params.getIsNoBase64());
oCXlsxSerializer.setFontDir(params.getFontPath());
OOX::CContentTypes oContentTypes;
_UINT32 nRes = oXlsb.WriteBin(sTo, oContentTypes) ? S_OK : AVS_FILEUTILS_ERROR_CONVERT;

std::wstring sXmlOptions = params.getXmlOptions();
return nRes;
}
_UINT32 xlst_bin2xlsb_dir(const std::wstring& sFrom, const std::wstring& sTo, InputParams& params, ConvertParams& convertParams)
{
std::wstring sTempUnpackedXLSX = combinePath(convertParams.m_sTempDir, L"xlsx_unpacked");
NSDirectory::CreateDirectory(sTempUnpackedXLSX);

std::wstring sMediaPath; // will be filled by 'CreateXlsxFolders' method
std::wstring sEmbedPath; // will be filled by 'CreateXlsxFolders' method
_UINT32 nRes = 0;

std::wstring sTempUnpackedXLSB = convertParams.m_sTempResultOOXMLDirectory;

oCXlsxSerializer.CreateXlsxFolders(sXmlOptions, convertParams.m_sTempResultOOXMLDirectory, sMediaPath, sEmbedPath);
convertParams.m_sTempResultOOXMLDirectory = sTempUnpackedXLSX;
nRes = xlst_bin2xlsx_dir(sFrom, sTempUnpackedXLSX, params, convertParams);

if (SUCCEEDED_X2T(nRes))
{
nRes = oCXlsxSerializer.loadFromFile(sTargetBin, convertParams.m_sTempResultOOXMLDirectory, sXmlOptions, sMediaPath, sEmbedPath);
convertParams.m_sTempResultOOXMLDirectory = sTempUnpackedXLSB;
nRes = xlsx_dir2xlsb_dir(sTempUnpackedXLSX, sTempUnpackedXLSB, params, convertParams);
}
// удаляем EditorWithChanges, потому что он не в Temp
if (sFrom != sTargetBin)
NSFile::CFileBinary::Remove(sTargetBin);

convertParams.m_sTempResultOOXMLDirectory = L"";
return nRes;
}
_UINT32 xlst_bin2xlsb(const std::wstring& sFrom, const std::wstring& sTo, InputParams& params, ConvertParams& convertParams)
@@ -358,19 +353,7 @@ namespace NExtractTools
}
return nRes;
}
_UINT32 xlsx_dir2xlsb_dir(const std::wstring& sFrom, const std::wstring& sTo, InputParams& params, ConvertParams& convertParams)
{
const OOX::CPath oox_path(sFrom);

OOX::Spreadsheet::CXlsb oXlsb;
oXlsb.m_bWriteToXlsb = true;
oXlsb.Read(oox_path);

OOX::CContentTypes oContentTypes;
_UINT32 nRes = oXlsb.WriteBin(sTo, oContentTypes) ? S_OK : AVS_FILEUTILS_ERROR_CONVERT;

return nRes;
}
_UINT32 xlsx_dir2xlsb(const std::wstring& sFrom, const std::wstring& sTo, InputParams& params, ConvertParams& convertParams)
{
return NSCommon::ooxml2ooxml(sFrom, sTo, params, convertParams, L"xlsb", xlsx_dir2xlsb_dir);

0 comments on commit d88fc23

Please sign in to comment.