From aed5522757cef3aeebe40ea973e70ec845da3313 Mon Sep 17 00:00:00 2001 From: "Sergey.Konovalov" Date: Wed, 15 Oct 2014 08:16:14 +0000 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5?= =?UTF-8?q?=D0=BC=D1=8B=D0=B5=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F,=20=D1=83=D1=88=D0=BB=D0=B8=20=D0=BE?= =?UTF-8?q?=D1=82=20GetFileAttributes=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D1=81=D1=83=D1=89=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=B0=20=D0=B8=20=D0=BF=D0=B0=D0=BF=D0=BA?= =?UTF-8?q?=D0=B8,=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B?= =?UTF-8?q?=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D1=8B=20=D0=B2=20utf8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@58874 954022d7-b5bf-4e40-9824-e11837661b57 --- ASCOfficeDocxFile2/BinReader/ChartWriter.h | 2 +- ASCOfficeDocxFile2/BinReader/MediaWriter.h | 2 +- ASCOfficeDocxFile2/BinReader/ReaderClasses.h | 10 +++--- ASCOfficeDocxFile2/BinReader/Readers.h | 6 ++-- .../BinWriter/BinEquationWriter.h | 22 ++++++------- ASCOfficeDocxFile2/BinWriter/BinWriters.h | 1 + .../DocWrapper/DocxSerializer.cpp | 24 +++++++------- .../DocWrapper/FontProcessor.cpp | 3 +- ASCOfficeDocxFile2/DocWrapper/FontProcessor.h | 16 ++++++++-- .../DocWrapper/XlsxSerializer.cpp | 9 +++--- DesktopEditor/common/Directory.h | 31 ++++++++++++++++++- DesktopEditor/common/File.h | 21 ++++++++++++- XlsxSerializerCom/Reader/BinaryWriter.h | 4 +-- XlsxSerializerCom/Reader/CSVReader.cpp | 16 +++++----- XlsxSerializerCom/Reader/CSVReader.h | 4 +-- XlsxSerializerCom/Writer/BinaryReader.h | 28 +++++++---------- XlsxSerializerCom/Writer/CSVWriter.h | 4 +-- 17 files changed, 129 insertions(+), 74 deletions(-) diff --git a/ASCOfficeDocxFile2/BinReader/ChartWriter.h b/ASCOfficeDocxFile2/BinReader/ChartWriter.h index 990752ebbf..53d14634c6 100644 --- a/ASCOfficeDocxFile2/BinReader/ChartWriter.h +++ b/ASCOfficeDocxFile2/BinReader/ChartWriter.h @@ -40,7 +40,7 @@ namespace Writers if(false == IsEmpty()) { CString sChartDir = m_sDir + _T("/word/charts"); - CreateDirectory(sChartDir, NULL); + NSDirectory::CreateDirectory(string2std_string(sChartDir)); for(int i = 0, length = m_aCharts.size(); i < length; ++i) { ChartElem* elem = m_aCharts[i]; diff --git a/ASCOfficeDocxFile2/BinReader/MediaWriter.h b/ASCOfficeDocxFile2/BinReader/MediaWriter.h index 64c5d60054..577dcf1029 100644 --- a/ASCOfficeDocxFile2/BinReader/MediaWriter.h +++ b/ASCOfficeDocxFile2/BinReader/MediaWriter.h @@ -21,7 +21,7 @@ namespace Writers } void AddImage(CString& sImg) { - CreateDirectory(m_sMediaDir, NULL); + NSDirectory::CreateDirectory(string2std_string(m_sMediaDir)); //TCHAR tExt[256]; //TCHAR tFilename[256]; diff --git a/ASCOfficeDocxFile2/BinReader/ReaderClasses.h b/ASCOfficeDocxFile2/BinReader/ReaderClasses.h index be2959b91f..c0c51cdca3 100644 --- a/ASCOfficeDocxFile2/BinReader/ReaderClasses.h +++ b/ASCOfficeDocxFile2/BinReader/ReaderClasses.h @@ -18,7 +18,7 @@ public: double Footer; bool TitlePg; bool EvenAndOddHeaders; - byte SectionType; + BYTE SectionType; int PageNumStart; bool bHeader; @@ -115,9 +115,9 @@ public: class CThemeColor{ public: bool Auto; - byte Color; - byte Tint; - byte Shade; + BYTE Color; + BYTE Tint; + BYTE Shade; bool bShade; bool bTint; @@ -295,7 +295,7 @@ public: bool Caps; bool SmallCaps; double Position; - byte FontHint; + BYTE FontHint; bool BoldCs; bool ItalicCs; long FontSizeCs; diff --git a/ASCOfficeDocxFile2/BinReader/Readers.h b/ASCOfficeDocxFile2/BinReader/Readers.h index 0528d94085..e26e74c811 100644 --- a/ASCOfficeDocxFile2/BinReader/Readers.h +++ b/ASCOfficeDocxFile2/BinReader/Readers.h @@ -2333,8 +2333,7 @@ public: } //Проверяем что файл существует - DWORD dwFileAttr = ::GetFileAttributes( sFilePath ); - if( dwFileAttr != INVALID_FILE_ATTRIBUTES && 0 == (dwFileAttr & FILE_ATTRIBUTE_DIRECTORY ) ) + if(NSFile::CFileBinary::Exists(string2std_string(sFilePath))) { m_oFileWriter.m_oMediaWriter.AddImage(sFilePath); if(bDeleteFile) @@ -5552,8 +5551,7 @@ public: //создаем папку для rels CString sRelsDir; sRelsDir.Format(_T("%s\\word\\charts\\_rels"), m_oFileWriter.m_oChartWriter.m_sDir); - DWORD dwFileAttr = ::GetFileAttributes( sRelsDir ); - if( dwFileAttr == INVALID_FILE_ATTRIBUTES ) + if( !NSDirectory::Exists(string2std_string(sRelsDir)) ) OOX::CSystemUtility::CreateDirectories(sRelsDir); m_oFileWriter.m_pDrawingConverter->SetDstContentRels(); diff --git a/ASCOfficeDocxFile2/BinWriter/BinEquationWriter.h b/ASCOfficeDocxFile2/BinWriter/BinEquationWriter.h index 92f5c3f4c4..bf5c43408f 100644 --- a/ASCOfficeDocxFile2/BinWriter/BinEquationWriter.h +++ b/ASCOfficeDocxFile2/BinWriter/BinEquationWriter.h @@ -3,7 +3,7 @@ #include "BinReaderWriterDefines.h" #include "../../Common/DocxFormat/Source/MathEquation/OutputDev.h" -#include "String.h" +//#include "String.h" #include /*namespace BinDocxRW @@ -197,13 +197,13 @@ namespace MathEquation int nCurPos = WriteItemStart(BinDocxRW::c_oSer_OMathContentType::Acc); int nCurPos1 = WriteItemStart(BinDocxRW::c_oSer_OMathContentType::AccPr); CString str; - switch (eType) - { - case embelDot: str.Insert(0, 0x0307); break; - case embelDDot: str.Insert(0, 0x0308); break; - case embelDDDot: str.Insert(0, 0x20DB); break; - case embelPrime: str.Insert(0, 0x2032); break; - case embelDPrime: str.Insert(0, 0x2033); break; + switch (eType) + { + case embelDot: str.Insert(0, 0x0307); break; + case embelDDot: str.Insert(0, 0x0308); break; + case embelDDDot: str.Insert(0, 0x20DB); break; + case embelPrime: str.Insert(0, 0x2032); break; + case embelDPrime: str.Insert(0, 0x2033); break; case embelLPrime: str.Insert(0, 0x0300); break; case embelTilde: str.Insert(0, 0x007E); break; case embelHat: str.Insert(0, 0x005E); break; @@ -217,7 +217,7 @@ namespace MathEquation case embelBar: str.Insert(0, 0x0305); break; case embelTPrime: str.Insert(0, 0x2034); break; case embelFrown: str.Insert(0, 0x23DD); break; - case embelSmile: str.Insert(0, 0x23DC); break; + case embelSmile: str.Insert(0, 0x23DC); break; } WriteItemValStr(BinDocxRW::c_oSer_OMathBottomNodesType::Chr, str); WriteItemEnd(nCurPos1); @@ -445,8 +445,8 @@ namespace MathEquation int nCurPos1; if (bBase) { - switch(eAlign) - { + switch(eAlign) + { case scriptalignRight: if (bSub) { diff --git a/ASCOfficeDocxFile2/BinWriter/BinWriters.h b/ASCOfficeDocxFile2/BinWriter/BinWriters.h index 37c1dcb116..7b7f3efb64 100644 --- a/ASCOfficeDocxFile2/BinWriter/BinWriters.h +++ b/ASCOfficeDocxFile2/BinWriter/BinWriters.h @@ -6,6 +6,7 @@ #include "../../Common/Base64.h" #include "../../ASCOfficePPTXFile/Editor/FontCutter.h" #include "../../XlsxSerializerCom/Reader/BinaryWriter.h" +#include "../../Common/DocxFormat/Source/DocxFormat/Docx.h" #include "../../Common/DocxFormat/Source/MathEquation/MathEquation.h" #include "BinEquationWriter.h" diff --git a/ASCOfficeDocxFile2/DocWrapper/DocxSerializer.cpp b/ASCOfficeDocxFile2/DocWrapper/DocxSerializer.cpp index a6c776cce4..b45f482b77 100644 --- a/ASCOfficeDocxFile2/DocWrapper/DocxSerializer.cpp +++ b/ASCOfficeDocxFile2/DocWrapper/DocxSerializer.cpp @@ -1,10 +1,10 @@ -#include "DocxSerializer.h" +п»ї#include "DocxSerializer.h" #include "../../DesktopEditor/common/Directory.h" #include "../../DesktopEditor/common/File.h" #include "../BinWriter/BinWriters.h" #include "../BinReader/Readers.h" -#include "../ASCOfficePPTXFile/Editor/FontPicker.h" +#include "../../ASCOfficePPTXFile/Editor/FontPicker.h" #ifndef _WIN32 #include "../../DesktopEditor/common/Types.h" @@ -46,13 +46,13 @@ bool BinDocxRW::CDocxSerializer::saveToFile(CString& sSrcFileName, CString& sDst pEmbeddedFontsManager = pFontPicker->GetNativeCutter(); - //добавляем весь латинский алфавит для списков. + //добавляем весь латинский алфавит для СЃРїРёСЃРєРѕРІ. pEmbeddedFontsManager->CheckString(CString(_T("abcdefghijklmnopqrstuvwxyz"))); - //добавим мега шрифт + //добавим мега шрифт pEmbeddedFontsManager->CheckFont(_T("Wingdings 3"), fp.getFontManager()); pEmbeddedFontsManager->CheckFont(_T("Arial"), fp.getFontManager()); - //pEmbeddedFontsManager добавляются все цифры + //pEmbeddedFontsManager добавляются РІСЃРµ цифры } oDrawingConverter.SetFontDir(m_sFontDir); @@ -101,7 +101,7 @@ bool BinDocxRW::CDocxSerializer::loadFromFile(CString& sSrcFileName, CString& sD oFile.ReadFile(pBase64Data, oFile.GetFileSize(), nBase64DataSize); oFile.CloseFile(); - //проверяем формат + //проверяем формат bool bValidFormat = false; CString sSignature(g_sFormatSignature); int nSigLength = sSignature.GetLength(); @@ -115,7 +115,7 @@ bool BinDocxRW::CDocxSerializer::loadFromFile(CString& sSrcFileName, CString& sD } if(bValidFormat) { - //Читаем из файла версию и длину base64 + //Читаем РёР· файла версию Рё длину base64 int nIndex = nSigLength; int nType = 0; CStringA version = ""; @@ -165,7 +165,7 @@ bool BinDocxRW::CDocxSerializer::loadFromFile(CString& sSrcFileName, CString& sD oDrawingConverter.SetMediaDstPath(sMediaPath); m_pCurFileWriter = new Writers::FileWriter(sDstPath, m_sFontDir, nVersion, m_bSaveChartAsImg, &oDrawingConverter, sThemePath); - //папка с картинками + //папка СЃ картинками TCHAR tFolder[256]; TCHAR tDrive[256]; _tsplitpath( sSrcFileName, tDrive, tFolder, NULL, NULL ); @@ -193,11 +193,11 @@ bool BinDocxRW::CDocxSerializer::loadFromFile(CString& sSrcFileName, CString& sD m_pCurFileWriter->m_oNumberingWriter.Write(); m_pCurFileWriter->m_oFontTableWriter.Write(); m_pCurFileWriter->m_oHeaderFooterWriter.Write(); - //Setting пишем после HeaderFooter, чтобы заполнить evenAndOddHeaders + //Setting пишем после HeaderFooter, чтобы заполнить evenAndOddHeaders m_pCurFileWriter->m_oSettingWriter.Write(); - //Document пишем после HeaderFooter, чтобы заполнить sectPr + //Document пишем после HeaderFooter, чтобы заполнить sectPr m_pCurFileWriter->m_oDocumentWriter.Write(); - //Rels и ContentTypes пишем в конце + //Rels Рё ContentTypes пишем РІ конце //m_pCurFileWriter->m_oDocumentRelsWriter.Write(_T("document.xml.rels")); m_pCurFileWriter->m_oContentTypesWriter.Write(); @@ -269,4 +269,4 @@ void BinDocxRW::CDocxSerializer::setIsNoBase64Save(bool bIsNoBase64Save) void BinDocxRW::CDocxSerializer::setSaveChartAsImg(bool bSaveChartAsImg) { m_bSaveChartAsImg = bSaveChartAsImg; -} \ No newline at end of file +} diff --git a/ASCOfficeDocxFile2/DocWrapper/FontProcessor.cpp b/ASCOfficeDocxFile2/DocWrapper/FontProcessor.cpp index 38b47df405..5257676e53 100644 --- a/ASCOfficeDocxFile2/DocWrapper/FontProcessor.cpp +++ b/ASCOfficeDocxFile2/DocWrapper/FontProcessor.cpp @@ -1,7 +1,8 @@ //#include "stdafx.h" #include "FontProcessor.h" -#include "../../Common/DocxFormat/Source/XlsxFormat/Styles/Fonts.h" +#include "../../Common/DocxFormat/Source/XlsxFormat/Xlsx.h" +#include "../../Common/DocxFormat/Source/DocxFormat/Docx.h" #include "../../Common/ASCUtils.h" namespace DocWrapper { diff --git a/ASCOfficeDocxFile2/DocWrapper/FontProcessor.h b/ASCOfficeDocxFile2/DocWrapper/FontProcessor.h index 1d177ae59f..849120deb0 100644 --- a/ASCOfficeDocxFile2/DocWrapper/FontProcessor.h +++ b/ASCOfficeDocxFile2/DocWrapper/FontProcessor.h @@ -1,13 +1,25 @@ #pragma once -#include "../stdafx.h" +//#include "../stdafx.h" #include +#ifdef _WIN32 +#include +#include +#else +#include "../../Common/DocxFormat/Source/Base/ASCString.h" +#endif + #include "../../DesktopEditor/fontengine/ApplicationFonts.h" //#include "DocWrapper/Base.h" namespace NSCommon{ template class nullable; } +namespace ComplexTypes{ + namespace Spreadsheet{ + class CString_; + } +} namespace OOX { class CFont; @@ -44,4 +56,4 @@ namespace DocWrapper { void addToFontMap(OOX::CFont& font); }; -} \ No newline at end of file +} diff --git a/ASCOfficeDocxFile2/DocWrapper/XlsxSerializer.cpp b/ASCOfficeDocxFile2/DocWrapper/XlsxSerializer.cpp index f50a73d339..3f3cf9beb2 100644 --- a/ASCOfficeDocxFile2/DocWrapper/XlsxSerializer.cpp +++ b/ASCOfficeDocxFile2/DocWrapper/XlsxSerializer.cpp @@ -2,9 +2,9 @@ #include "../../DesktopEditor/common/Directory.h" #include "../../DesktopEditor/common/File.h" -#include "../XlsxSerializerCom/Reader/BinaryWriter.h" -#include "../XlsxSerializerCom/Writer/BinaryReader.h" -#include "../ASCOfficePPTXFile/Editor/FontPicker.h" +#include "../../XlsxSerializerCom/Reader/BinaryWriter.h" +#include "../../XlsxSerializerCom/Writer/BinaryReader.h" +#include "../../ASCOfficePPTXFile/Editor/FontPicker.h" namespace BinXlsxRW{ int g_nCurFormatVersion = 0; @@ -139,8 +139,7 @@ namespace BinXlsxRW{ CString sRelsDir = sDrive + sFolder; sRelsDir.Append(_T("_rels")); - DWORD dwFileAttr = ::GetFileAttributes( sRelsDir ); - if( dwFileAttr == INVALID_FILE_ATTRIBUTES ) + if( !NSDirectory::Exists(string2std_string(sRelsDir)) ) OOX::CSystemUtility::CreateDirectories(sRelsDir); oChartSpace.write2(sFilepath); diff --git a/DesktopEditor/common/Directory.h b/DesktopEditor/common/Directory.h index 5e7718b6ea..cca933fb3e 100644 --- a/DesktopEditor/common/Directory.h +++ b/DesktopEditor/common/Directory.h @@ -9,6 +9,10 @@ #include "windows.h" #include "windef.h" #elif LINUX +#include +#include +#include +#include "File.h" #elif MAC #endif @@ -50,9 +54,34 @@ namespace NSDirectory #ifdef WIN32 ::CreateDirectoryW(strDirectory.c_str(), NULL); #elif LINUX + BYTE* pUtf8 = NULL; + LONG lLen = 0; + NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strDirectory.c_str(), strDirectory.length(), pUtf8, lLen, false); + struct stat st; + if (stat((char*)pUtf8, &st) == -1) { + mkdir((char*)pUtf8, S_IRWXU | S_IRWXG | S_IRWXO); + } + delete [] pUtf8; #elif MAC +#endif + } + static bool Exists(std::wstring& strDirectory) + { +#ifdef WIN32 + DWORD dwAttrib = ::GetFileAttributesW(strDirectory.c_str()); + return (dwAttrib != INVALID_FILE_ATTRIBUTES && 0 != (dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); +#elif LINUX + BYTE* pUtf8 = NULL; + LONG lLen = 0; + NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strDirectory.c_str(), strDirectory.length(), pUtf8, lLen, false); + struct stat st; + bool bRes = (0 == stat((char*)pUtf8, &st)) && S_ISDIR(st.st_mode); + delete [] pUtf8; + return bRes; +#elif MAC + return true; #endif } } -#endif //_BUILD_DIRECTORY_CROSSPLATFORM_H_ \ No newline at end of file +#endif //_BUILD_DIRECTORY_CROSSPLATFORM_H_ diff --git a/DesktopEditor/common/File.h b/DesktopEditor/common/File.h index 20971c2b6c..0fb283ea03 100644 --- a/DesktopEditor/common/File.h +++ b/DesktopEditor/common/File.h @@ -504,7 +504,7 @@ namespace NSFile BYTE* pData = NULL; LONG lLen = 0; - CUtf8Converter::GetUtf8StringFromUnicode(strXml.c_str(), strXml.size(), pData, lLen, bIsBOM); + CUtf8Converter::GetUtf8StringFromUnicode(strXml.c_str(), strXml.length(), pData, lLen, bIsBOM); WriteFile(pData, lLen); @@ -518,6 +518,25 @@ namespace NSFile oFile.CloseFile(); return true; } + static bool Exists(const std::wstring& strFileName) + { +#if defined(WIN32) || defined(_WIN32_WCE) + FILE* pFile = _wfopen(strFileName.c_str(), L"rb"); +#else + BYTE* pUtf8 = NULL; + LONG lLen = 0; + CUtf8Converter::GetUtf8StringFromUnicode(strFileName.c_str(), strFileName.length(), pUtf8, lLen, false); + FILE* pFile = fopen((char*)pUtf8, "rb"); + delete [] pUtf8; +#endif + if(NULL != pFile) + { + fclose(pFile); + return true; + } + else + return false; + } }; } diff --git a/XlsxSerializerCom/Reader/BinaryWriter.h b/XlsxSerializerCom/Reader/BinaryWriter.h index 346b7195c6..2e4a37911e 100644 --- a/XlsxSerializerCom/Reader/BinaryWriter.h +++ b/XlsxSerializerCom/Reader/BinaryWriter.h @@ -701,7 +701,7 @@ namespace BinXlsxRW { { m_oBcw.m_oStream.WriteBYTE(c_oSerBorderPropTypes::Style); m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte); - m_oBcw.m_oStream.WriteBYTE((byte)borderProp.m_oStyle->GetValue()); + m_oBcw.m_oStream.WriteBYTE((BYTE)borderProp.m_oStyle->GetValue()); } }; void WriteCellStyleXfs(const OOX::Spreadsheet::CCellStyleXfs& cellStyleXfs) @@ -2427,7 +2427,7 @@ namespace BinXlsxRW { OOX::CPath oNormalizedPath = OOX::CPath(pDrawing->GetReadPath().GetDirectory()) / oRels->Target().GetPath(); CString sChartPath = oNormalizedPath.GetPath(); //проверяем наличие файла - if( INVALID_FILE_ATTRIBUTES != ::GetFileAttributes( sChartPath ) ) + if( NSFile::CFileBinary::Exists(string2std_string(sChartPath)) ) { CString sOldRelsPath = m_pOfficeDrawingConverter->GetRelsPath(); m_pOfficeDrawingConverter->SetRelsPath(sChartPath); diff --git a/XlsxSerializerCom/Reader/CSVReader.cpp b/XlsxSerializerCom/Reader/CSVReader.cpp index d502b9ae64..35a0d5acb6 100644 --- a/XlsxSerializerCom/Reader/CSVReader.cpp +++ b/XlsxSerializerCom/Reader/CSVReader.cpp @@ -1,6 +1,5 @@ #include "CSVReader.h" -#include "../../Common/MappingFile.h" #include namespace CSVReader @@ -108,17 +107,18 @@ namespace CSVReader pWorkbook->m_oSheets.Init(); pWorkbook->m_oSheets->m_arrItems.push_back(pSheet); - MemoryMapping::CMappingFile oMappingFile = MemoryMapping::CMappingFile(); - if(FALSE != oMappingFile.Open(sFileName)) + NSFile::CFileBinary oFile; + if(oFile.OpenFile(string2std_string(sFileName))) { - long nFileSize = oMappingFile.GetSize(); - LPCSTR pFileData = (LPCSTR)oMappingFile.GetData(); + DWORD nFileSize = 0; + BYTE* pFileData = new BYTE[oFile.GetFileSize()]; + oFile.ReadFile(pFileData, oFile.GetFileSize(), nFileSize); + oFile.CloseFile(); - INT nSize = MultiByteToWideChar(nCodePage, 0, pFileData, nFileSize, NULL, 0); + INT nSize = MultiByteToWideChar(nCodePage, 0, (LPCSTR)pFileData, nFileSize, NULL, 0); WCHAR *pTemp = new WCHAR [nSize]; memset(pTemp, 0, sizeof(WCHAR) * nSize); - MultiByteToWideChar (nCodePage, 0, pFileData, nFileSize, pTemp, nSize); - oMappingFile.Close(); + MultiByteToWideChar (nCodePage, 0, (LPCSTR)pFileData, nFileSize, pTemp, nSize); CONST WCHAR wcNewLineN = _T('\n'); CONST WCHAR wcNewLineR = _T('\r'); diff --git a/XlsxSerializerCom/Reader/CSVReader.h b/XlsxSerializerCom/Reader/CSVReader.h index f971f10b40..afa3e4401a 100644 --- a/XlsxSerializerCom/Reader/CSVReader.h +++ b/XlsxSerializerCom/Reader/CSVReader.h @@ -15,7 +15,7 @@ namespace CSVReader { void AddCell(CString &sText, INT nStartCell, std::stack &oDeleteChars, OOX::Spreadsheet::CRow &oRow, INT nRow, INT nCol, BOOL bIsWrap); - void ReadFromCsvToXlsx(CString &sFileName, OOX::Spreadsheet::CXlsx &oXlsx, UINT nCodePage, CONST WCHAR wcDelimiter); + void ReadFromCsvToXlsx(CString &sFileName, OOX::Spreadsheet::CXlsx &oXlsx, UINT nCodePage, const WCHAR wcDelimiter); } -#endif //CSV_READER \ No newline at end of file +#endif //CSV_READER diff --git a/XlsxSerializerCom/Writer/BinaryReader.h b/XlsxSerializerCom/Writer/BinaryReader.h index 6e2b1f4cf3..cb39fee5e4 100644 --- a/XlsxSerializerCom/Writer/BinaryReader.h +++ b/XlsxSerializerCom/Writer/BinaryReader.h @@ -1,8 +1,6 @@ #ifndef BINARY_READER #define BINARY_READER -#include "../../Common/FileWriter.h" -#include "../../Common/MappingFile.h" #include "../../Common/Base64.h" #include "../../Common/ATLDefine.h" @@ -1597,7 +1595,8 @@ namespace BinXlsxRW { CString sGfxdata; if(TRUE == Base64::Base64Encode(pWriteBuffer, nWriteBufferLength, (LPSTR)pbBase64Buffer, &nBase64BufferLen, Base64::B64_BASE64_FLAG_NONE)) { - sGfxdata = CString((LPSTR)pbBase64Buffer, nBase64BufferLen); + std::wstring strGfxdata = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8(pbBase64Buffer, nBase64BufferLen); + sGfxdata = CString(strGfxdata.c_str()); //важно иначе при редактировании и сохранении в Excel перетирается sGfxdata.Append(_T("\r\n")); } @@ -1842,8 +1841,7 @@ namespace BinXlsxRW { { CString sRelsDir; sRelsDir.Format(_T("%s\\xl\\drawings\\_rels"), m_sDestinationDir); - DWORD dwFileAttr = ::GetFileAttributes( sRelsDir ); - if( dwFileAttr == INVALID_FILE_ATTRIBUTES ) + if( !NSDirectory::Exists(string2std_string(sRelsDir)) ) OOX::CSystemUtility::CreateDirectories(sRelsDir); m_pOfficeDrawingConverter->SetDstContentRels(); @@ -2421,8 +2419,7 @@ namespace BinXlsxRW { //создаем папку для rels CString sRelsDir; sRelsDir.Format(_T("%s\\xl\\charts\\_rels"), m_sDestinationDir); - DWORD dwFileAttr = ::GetFileAttributes( sRelsDir ); - if( dwFileAttr == INVALID_FILE_ATTRIBUTES ) + if( !NSDirectory::Exists(string2std_string(sRelsDir)) ) OOX::CSystemUtility::CreateDirectories(sRelsDir); m_pOfficeDrawingConverter->SetDstContentRels(); @@ -2544,8 +2541,7 @@ namespace BinXlsxRW { if(pair->second->bNeedCreate) { pair->second->bNeedCreate = false; - DWORD dwFileAttr = ::GetFileAttributes( m_sMediaDir ); - if( dwFileAttr == INVALID_FILE_ATTRIBUTES ) + if( !NSDirectory::Exists(string2std_string(m_sMediaDir)) ) OOX::CSystemUtility::CreateDirectories(m_sMediaDir); ::CopyFile(pair->second->sPath, sNewImagePath, FALSE); } @@ -2911,8 +2907,7 @@ namespace BinXlsxRW { } } //Проверяем что файл существует - DWORD dwFileAttr = ::GetFileAttributes( sImageSrc ); - if( dwFileAttr != INVALID_FILE_ATTRIBUTES && 0 == (dwFileAttr & FILE_ATTRIBUTE_DIRECTORY ) ) + if(NSFile::CFileBinary::Exists(string2std_string(sImageSrc))) { m_sCurSrc = sImageSrc; if(bAddToDelete) @@ -2936,11 +2931,13 @@ namespace BinXlsxRW { int ReadFile(CString sSrcFileName, CString sDstPath, NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter, CString& sXMLOptions) { bool bResultOk = false; - MemoryMapping::CMappingFile oMappingFile = MemoryMapping::CMappingFile(); - if(FALSE != oMappingFile.Open(CString(sSrcFileName))) + NSFile::CFileBinary oFile; + if(oFile.OpenFile(string2std_string(sSrcFileName))) { - long nBase64DataSize = oMappingFile.GetSize(); - BYTE* pBase64Data = oMappingFile.GetData(); + DWORD nBase64DataSize = 0; + BYTE* pBase64Data = new BYTE[oFile.GetFileSize()]; + oFile.ReadFile(pBase64Data, oFile.GetFileSize(), nBase64DataSize); + oFile.CloseFile(); //проверяем формат bool bValidFormat = false; @@ -3042,7 +3039,6 @@ namespace BinXlsxRW { bResultOk = true; } } - oMappingFile.Close(); } return S_OK; } diff --git a/XlsxSerializerCom/Writer/CSVWriter.h b/XlsxSerializerCom/Writer/CSVWriter.h index e364d9b02e..3218ab1430 100644 --- a/XlsxSerializerCom/Writer/CSVWriter.h +++ b/XlsxSerializerCom/Writer/CSVWriter.h @@ -17,7 +17,7 @@ namespace CSVWriter { void WriteFile(NSFile::CFileBinary *pFile, WCHAR **pWriteBuffer, INT &nCurrentIndex, CString &sWriteString, UINT &nCodePage, BOOL bIsEnd = FALSE); - void WriteFromXlsxToCsv(CString &sFileDst, OOX::Spreadsheet::CXlsx &oXlsx, UINT nCodePage, CONST WCHAR wcDelimiter); + void WriteFromXlsxToCsv(CString &sFileDst, OOX::Spreadsheet::CXlsx &oXlsx, UINT nCodePage, const WCHAR wcDelimiter); } -#endif //CSV_WRITER \ No newline at end of file +#endif //CSV_WRITER