프로젝트 작업
Aspose.Tasks for .NET을 사용하면 Microsoft Project(MPP/XML) 파일을 Microsoft Project를 설치하거나 Microsoft Office Automation에 의존하지 않고도 다룰 수 있습니다. 다음을 제공합니다 강력하고 유연한 API 개발자가 다양한 형식에서 프로젝트 데이터를 일관된 방식으로 조작하여 시간과 노력을 절약하도록 돕습니다.
Aspose.Tasks를 사용하면 다음을 수행할 수 있습니다:
- 새 프로젝트 파일을 처음부터 생성하거나 템플릿을 기반으로 생성합니다
- 기존 파일을 다양한 형식(MPP, MPT, MPX, XML, XER, P6 XML)으로 엽니다
- 프로젝트를 MPP, XML, PDF, HTML 등 여러 형식으로 저장합니다
이 문서에서는 프로젝트 파일을 생성하고 읽고 저장하는 방법 를 사용하여 Project
클래스.
빈 프로젝트 파일 만들기
이 Project 클래스는 Aspose.Tasks에서 프로젝트와 관련된 속성을 설정하고 가져오며 동작을 제어하는 주요 클래스입니다. 이 클래스에서 제공하는 Save 메서드를 사용하면 Project를 단일 API 호출로 XML, MPP, PDF, HTML 등 다양한 출력 형식으로 렌더링할 수 있습니다. 이 메서드는 파일 스트림 또는 파일 이름과 SaveFileFormat 열거형 형식.
다음 코드 줄은 XML 형식으로 간단한 프로젝트 파일을 생성합니다.
빈 프로젝트 생성 및 XML 파일로 저장
이 예제는 새 프로젝트를 생성하고 Microsoft Project에서 열 수 있는 XML 파일로 저장하는 방법을 보여줍니다.
1Project project = new Project();
2project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);
생성된 XML 프로젝트 파일은 다음 단계로 Microsoft Project에서 열 수 있습니다:
- 에서 파일 메뉴에서 열기.
- 파일 형식에서 XML 형식(*.xml) 옵션을 파일 형식에서 선택하고 출력 XML 파일로 찾아봅니다.
- 에서 프로젝트 메뉴에서 프로젝트 정보
빈 프로젝트 생성 및 스트림에 저장
프로젝트를 메모리 내에서 처리해야 하는 경우(예: 웹 애플리케이션 또는 클라우드 환경), 파일에 쓰는 대신 직접 MemoryStream
파일에 쓰는 대신.
1// Create a project instance
2Project newProject = new Project();
3
4// Create a file stream
5using (FileStream stream = new FileStream("EmptyProjectSaveStream_out.xml", FileMode.Create, FileAccess.Write))
6{
7 // Write the stream into XML format
8 newProject.Save(stream, SaveFileFormat.XML);
9}
빈 프로젝트 생성 및 MPP로 저장
이 예제는 네이티브 Microsoft Project MPP 파일을 프로그래밍 방식으로 생성하는 방법을 보여줍니다.
1// there is no more need to load MPP template to save it into MPP
2// add tasks, resources, etc.
3Project project = new Project();
4
5// !The project will be saved into MPP by using internal MPP template.
6project.Save("New Project.mpp", SaveFileFormat.MPP);
프로젝트 파일 읽기
Aspose.Tasks for .NET을 사용하면 다양한 형식의 기존 프로젝트를 읽을 수 있습니다: XML, MPP, MPT, MPX, XER, Primavera P6 XML 등으로 읽을 수 있으며 업데이트 후 MPP나 다른 형식으로 다시 저장할 수 있습니다. 다음 예제는 Project 클래스의 생성자를 사용하여 프로젝트 파일을 읽는 방법을 보여줍니다.
템플릿으로 프로젝트 파일 읽기
이 예제는 Project
생성자를 사용하여 프로젝트를 로드하고 추가 작업을 위한 템플릿으로 취급하는 방법을 보여줍니다.
1// Read existing project template file
2Project project = new Project("New Project.mpp");
스트림에서 프로젝트 파일 읽기
프로젝트가 업로드되거나 스트림에 저장되는 시나리오에서는 Stream
스트림 객체에서 직접 로드할 수 있습니다.
1// Read the project xml into file stream
2using (FileStream stream = new FileStream("ReadProjectFileFromStream.xml", FileMode.Open))
3{
4 // Create project using file stream
5 Project project = new Project(stream);
6}
Microsoft Project Server 데이터베이스에서 프로젝트 데이터 가져오기
향후 릴리스에서 Microsoft Project Server 데이터베이스에서 프로젝트 데이터를 가져오는 기능을 제거할 예정입니다. 대신 Microsoft Project Server의 PWA API를 사용하여 프로젝트 데이터의 가져오기/내보내기를 사용할 수 있습니다.
자세한 내용은 다음 문서를 참조하십시오: ProjectServerManager 클래스에 대한 자세한 정보를 참조하십시오.
1 // Create connection string
2 SqlConnectionStringBuilder sqlConnectionString = new SqlConnectionStringBuilder();
3 sqlConnectionString.DataSource = "192.168.56.2,1433";
4 sqlConnectionString.Encrypt = true;
5 sqlConnectionString.TrustServerCertificate = true;
6 sqlConnectionString.InitialCatalog = "ProjectServer_Published";
7 sqlConnectionString.NetworkLibrary = "DBMSSOCN";
8 sqlConnectionString.UserID = "sa";
9 sqlConnectionString.Password = "*****";
10
11 // Use Aspose.Tasks.Connectivity namespace
12 MspDbSettings settings = new MspDbSettings(sqlConnectionString.ConnectionString, new Guid("E6426C44-D6CB-4B9C-AF16-48910ACE0F54"));
13 Project project = new Project(settings);
MPD (Microsoft Project Database) 파일에서 프로젝트 데이터 가져오기
이전 프로젝트 데이터베이스는 .mpd
형식으로도 읽을 수 있습니다.
1 DbSettings settings = new MpdSettings("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + "MpdFileToRead.mpd", 1);
2 Project project = new Project(settings);
프로젝트 로드 시 잘못된 문자 무시하기
일부 파일은 사용자 정의 필드에 잘못된 문자를 포함할 수 있습니다. Microsoft Project는 잘못된 문자를 허용하지 않으므로 해당 파일은 자동화 또는 다른 도구로 생성되거나 조작된 것입니다. 이러한 파일을 API로 로드하면 예외가 발생할 수 있습니다. 이러한 잘못된 문자를 무시하려면 Project 클래스의 오버로드된 생성자에 델리게이트 메서드 ParseErrorCallBack을 사용하면 됩니다.
1static void Run()
2{
3 // Open modified xml stream
4 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(GetModifiedXml())))
5 {
6 Project project = new Project(stream, new ParseErrorCallback(CustomDurationHandler));
7 }
8}
9
10static string GetModifiedXml()
11{
12 // Open valid xml file and modify it
13 using (TextReader reader = new StreamReader("IgnoreInvalidCharacters.xml"))
14 {
15 string xml = reader.ReadToEnd();
16 Regex regex = new Regex("PT(\\d+)H(\\d+)M(\\d+)S");
17 return regex.Replace(xml, "**$1Hrs$2Mins$3Secs**");
18 }
19}
20
21static object CustomDurationHandler(object sender, ParseErrorArgs args)
22{
23 Regex regex = new Regex("[*]{2}(\\d+)Hrs(\\d+)Mins(\\d+)Secs[*]{2}");
24 if (args.FieldType == typeof(TimeSpan))
25 {
26 Debug.Print("Object field : {0}, Invalid value : {1}", args.FieldName, args.InvalidValue);
27 string duration = regex.Replace(args.InvalidValue, "PT$1H$2M$3S");
28 TimeSpan newValue = Duration.ParseTimeSpan(duration);
29 Debug.Print("New value : {0}", newValue);
30 return newValue;
31 }
32 // Here we handle only TimeSpan instances, so rethrow original exception with other types
33 throw args.Exception;
34}
인코딩 작업
MPX 파일을 처리할 때 올바른 파일 인코딩을 지정해야 할 수 있습니다. 이렇게 하면 텍스트 데이터가 올바르게 읽히고 표시됩니다. Aspose.Tasks for .NET은 MPX 파일의 인코딩을 지원합니다. 다음 코드 예제는 인코딩 설정을 보여줍니다.
1// Specify Encodings
2using (StreamReader streamReader = new StreamReader("Project.mpx", System.Text.Encoding.GetEncoding("ISO-8859-1")))
3{
4 Project project = new Project(streamReader.BaseStream);
5}
Aspose.Tasks for .NET은 MS Project 자체를 요구하지 않고도 개발자가 Microsoft Project 파일을 완전히 제어할 수 있도록 합니다.
다음 Project
클래스에서는 다음을 수행할 수 있습니다:
- 새 프로젝트(XML, MPP)를 생성하고 파일 또는 스트림으로 저장
- 여러 형식의 기존 프로젝트를 읽기
- Project Server 및 데이터베이스 통합(레거시 지원) 작업
- 인코딩 문제와 잘못된 문자를 유연하게 처리
데스크톱 솔루션이든 웹 애플리케이션이든 상관없이 Aspose.Tasks는 일관되고 신뢰할 수 있는 API 를 통해 프로젝트 데이터를 프로그래밍 방식으로 관리할 수 있도록 합니다.