Lire des fichiers de projet
Aspose.Tasks pour C ++ vous permet de travailler avec les fichiers Microsoft Project (MPP / XML) sans installer Microsoft Project ou à l’aide de Microsoft Office Automation. Une API puissante et flexible, Aspose.Tasks vous permet d’économiser du temps et des efforts en vous donnant les outils dont vous avez besoin pour rédiger du code efficace pour manipuler les fichiers de projet dans vos applications C ++.
Cet article explique comment ouvrir et lire le fichier de projet.
Lire un fichier de projet
Pour le moment, Aspose.Tasks peut exporter le projet Microsoft au format XML de Microsoft Project uniquement. C’est vrai si vous créez un nouveau projet. Aspose.Tasks pour C ++ vous permet de lire les fichiers MPP existants et de les enregistrer au format MPP après la mise à jour. Cela permet à la lecture de MPP ainsi que des formats MPT en tant que modèles d’entrée. Cet article montre comment un fichier de projet (XML, MPP, MPT) peut être lu à l’aide du constructeur de la classe de projet.
Lire les fichiers du projet comme modèle
1// The path to the documents directory.
2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
3
4// Read existing project template file
5System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"ReadProjectFiles.mpp");
Reading Project File from Stream
1// The path to the documents directory.
2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
3
4// Read project xml into file stream
5{
6 System::SharedPtr<System::IO::Stream> filesStream = System::MakeObject<System::IO::FileStream>(dataDir + u"ReadProjectFileFromStream.xml", System::IO::FileMode::Open);
7 // Clearing resources under 'using' statement
8 System::Details::DisposeGuard<1> __dispose_guard_0({ filesStream});
9 // ------------------------------------------
10
11 try
12 {
13 // Create project using file stream
14 System::SharedPtr<Project> project = System::MakeObject<Project>(filesStream);
15 }
16 catch(...)
17 {
18 __dispose_guard_0.SetCurrentException(std::current_exception());
19 }
20}
Ignoring invalid characters during loading Project
Some files may have invalid characters in the custom fields. Microsoft Project does not allow invalid character so the files have been created or manipulated with automation or some other tools. If these files are loaded using the API, they may lead to an exception. In order to ignore such invalid characters, the overloaded constructor of Project class can be used with the delegate method ParseErrorCallBack.
1void IgnoreInvalidCharactersDuringloadingProject::Run()
2{
3 // Open modified xml stream
4 {
5 System::SharedPtr<System::IO::MemoryStream> stream = System::MakeObject<System::IO::MemoryStream>(System::Text::Encoding::get_UTF8()->GetBytes(GetModifiedXml()));
6 // Clearing resources under 'using' statement
7 System::Details::DisposeGuard<1> __dispose_guard_0({ stream});
8 // ------------------------------------------
9
10 try
11 {
12 System::SharedPtr<Project> project = System::MakeObject<Project>(stream, static_cast<ParseErrorCallback>(CustomDurationHandler));
13 }
14 catch(...)
15 {
16 __dispose_guard_0.SetCurrentException(std::current_exception());
17 }
18 }
19}
Read Password Protected Projects (2003 Format)
The Project class exposes the Project() constructor which is capable of reading password-protected files in 2003 format. Saving a password-protected file is not supported yet.
To read a password-protected project file:
- Load a Microsoft Project file.
- In the constructor, provide a password as the second argument to the constructor.
The following code example demonstrates how to read password-protected project file.
1// The path to the documents directory.
2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
3
4System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"PasswordProtectedProject.mpp", System::String(u"password"));
Working With Encodings
Aspose.Tasks provides support for the encoding of MPX files. The following code example demonstrates how to use the encoding settings.
1// Specify Encodings
2{
3 System::SharedPtr<System::IO::StreamReader> streamReader = System::MakeObject<System::IO::StreamReader>(dataDir + u"Project.mpx", System::Text::Encoding::GetEncoding(u"ISO-8859-1"));
4 // Clearing resources under 'using' statement
5 System::Details::DisposeGuard<1> __dispose_guard_0({ streamReader});
6 // ------------------------------------------
7
8 try
9 {
10 auto project = System::MakeObject<Project>(streamReader->get_BaseStream());
11 }
12 catch(...)
13 {
14 __dispose_guard_0.SetCurrentException(std::current_exception());
15 }
16}