프로젝트 작업

Aspose.Tasks for .NET을 사용하면 Microsoft Project(MPP/XML) 파일을 Microsoft Project를 설치하거나 Microsoft Office Automation에 의존하지 않고도 다룰 수 있습니다. 다음을 제공합니다 강력하고 유연한 API 개발자가 다양한 형식에서 프로젝트 데이터를 일관된 방식으로 조작하여 시간과 노력을 절약하도록 돕습니다.

Aspose.Tasks를 사용하면 다음을 수행할 수 있습니다:

이 문서에서는 프로젝트 파일을 생성하고 읽고 저장하는 방법 를 사용하여 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에서 열 수 있습니다:

  1. 에서 파일 메뉴에서 열기.
  2. 파일 형식에서 XML 형식(*.xml) 옵션을 파일 형식에서 선택하고 출력 XML 파일로 찾아봅니다.
  3. 에서 프로젝트 메뉴에서 프로젝트 정보

빈 프로젝트 생성 및 스트림에 저장

프로젝트를 메모리 내에서 처리해야 하는 경우(예: 웹 애플리케이션 또는 클라우드 환경), 파일에 쓰는 대신 직접 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 클래스에서는 다음을 수행할 수 있습니다:

데스크톱 솔루션이든 웹 애플리케이션이든 상관없이 Aspose.Tasks는 일관되고 신뢰할 수 있는 API 를 통해 프로젝트 데이터를 프로그래밍 방식으로 관리할 수 있도록 합니다.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.