MPP ถึง XML

การแปลงไฟล์ MPP เป็น XML | ส่งออกไฟล์ Microsoft Project เป็น XML ใน C#

Microsoft Project เป็นซอฟต์แวร์การจัดการโครงการที่ได้รับความนิยมและแพร่หลายมากที่สุดซอฟต์แวร์หนึ่ง ซอฟต์แวร์นี้ช่วยให้คุณวางแผนโครงการ มอบหมายงาน จัดการทรัพยากรและเวิร์กโฟลว์ สร้างรายงาน ฯลฯ อย่างไรก็ตาม MS Project ไม่เปิดโอกาสให้ผู้ใช้ที่ไม่ได้ลงทะเบียนเปิดหรือแก้ไขไฟล์รูปแบบ MPP ซึ่งหมายความว่าหากคุณไม่มีใบอนุญาต Microsoft Project ที่ซื้อมา คุณจะไม่สามารถทำงานกับไฟล์ MPP ได้ ดังนั้น เมื่อแชร์ไฟล์โครงการ ผู้รับจะต้องมีการสมัครใช้งาน MS Project แม้ว่าเขา/เธอต้องการดูไฟล์เท่านั้น ดังนั้น การแปลงไฟล์ MPP เป็น XML จึงเป็นวิธีแก้ปัญหาที่ดี

API การแปลงไฟล์ Microsoft Project

Aspose.Tasks Cloud คือ REST API ของเราซึ่งนำเสนอฟีเจอร์ต่างๆ ในการสร้าง ประมวลผล และแปลงไฟล์การจัดการโครงการเป็น รูปแบบไฟล์ที่รองรับ ที่หลากหลาย เพื่อประมวลผลไฟล์โครงการ คุณสามารถโหลดไฟล์จากที่เก็บข้อมูลบนคลาวด์ นำเข้าโครงการจากรูปแบบ primavera DB (primavera SQLite.db หรือ primavera XML) และนำเข้าโครงการจากฐานข้อมูลด้วยสตริงการเชื่อมต่อที่ระบุ หรือจะนำเข้าโครงการจาก Project Online ก็ได้ ตามขอบเขตของบทความนี้ เราจะใช้ Aspose.Tasks Cloud SDK สำหรับ .NET ซึ่งสามารถดาวน์โหลดได้ที่ NuGet และ GitHub โปรดดำเนินการคำสั่งต่อไปนี้ในเทอร์มินัลเพื่อติดตั้ง SDK ผ่าน NuGet:

nuget install Aspose.Tasks-Cloud

เพื่อติดตั้ง SDK ในตัวจัดการแพ็กเกจ NuGet โดยตรง โปรดดำเนินการคำสั่งต่อไปนี้:

 PM> Install-Package Aspose.Tasks-Cloud

ตอนนี้เราต้องสร้างบัญชีสมัครสมาชิกฟรีโดยไปที่ แผงควบคุม Aspose.Cloud ใช้บัญชี GitHub หรือ Google ของคุณเพื่อลงทะเบียน หรือคลิกที่ สร้างบัญชีใหม่ และรับข้อมูลประจำตัวลูกค้าของคุณ

แปลง MPP เป็น XML ใน C#

โปรดปฏิบัติตามขั้นตอนที่ระบุด้านล่างเพื่อดำเนินการแปลงโดยใช้ C# .NET

  • ขั้นแรก เราต้องสร้างอ็อบเจ็กต์ TasksApi ขณะส่งรายละเอียด ClientSecret และ ClientId เป็นอาร์กิวเมนต์
  • ประการที่สอง โหลดเนื้อหาของ MPP ไปยังอินสแตนซ์ FileStream
  • ตอนนี้สร้างอ็อบเจ็กต์ของคลาส PostCreateRequest ซึ่งต้องมีชื่อไฟล์และอินสแตนซ์ Stream ที่มีเนื้อหา MPP
  • เรียกใช้เมธอด UploadFile(…) ของ TasksApi เพื่ออัปโหลดไฟล์ไปยังที่เก็บข้อมูลบนคลาวด์
  • จากนั้นสร้างอ็อบเจ็กต์ของคลาส GetTaskDocumentWithFormatRequest
  • ระบุค่า XML จากการแจงนับ ProjectFileFormat และกำหนดค่าให้กับคุณสมบัติ Format ของอ็อบเจ็กต์ GetTaskDocumentWithFormatRequest
  • ตอนนี้เรียกใช้เมธอด GetTaskDocumentWithFormat(…) เพื่อดำเนินการแปลง
  • เนื่องจากผลลัพธ์ของขั้นตอนสุดท้ายถูกบันทึกไว้ในอินสแตนซ์ Stream เราจึงต้องใช้ File.Create object เพื่อบันทึกผลลัพธ์ลงในไดรฟ์ภายในเครื่อง สามารถดูรายละเอียดได้ในวิธีการกำหนดเอง saveToDisk(..)
// รับ ClientID จาก https://dashboard.aspose.cloud/
string clientSecret = "d757548a9f2558c39c2feebdf85b4c44";
string clientID = "4db2f826-bf9c-42e7-8b2a-8cbca2d15553";

// สร้างอินสแตนซ์ TasksApi
TasksApi tasksApi = new TasksApi(clientSecret, clientID);

// ป้อนชื่อไฟล์ MPP
String inputFile = "Home move plan.mpp";
// ชื่อไฟล์ XML ที่ได้
String resultant = "Converted.xml";

try
{

    // อ่านเอกสารโครงการจากระบบภายในเครื่องไปยังอินสแตนซ์สตรีม
    using (var inputStream = new FileStream("C:\\Users\\shahbnay\\Downloads\\"+inputFile, FileMode.Open))
    {
        var uploadFileRequest = new PostCreateRequest("Home move plan.mpp", inputStream);
        // อัพโหลดไฟล์ไปยังที่เก็บข้อมูลบนคลาวด์
        tasksApi.UploadFile(uploadFileRequest);
    }
   
    // สร้างคำขอแปลงไฟล์ MPP
    var request = new GetTaskDocumentWithFormatRequest();
    
    // ระบุชื่อ MPP อินพุตจากที่เก็บข้อมูลบนคลาวด์
    request.Name = inputFile;
    
    // ตั้งค่า XML เป็นรูปแบบผลลัพธ์
    request.Format = Aspose.Tasks.Cloud.Sdk.Model.ProjectFileFormat.Xml;
    
    // หากพารามิเตอร์เป็นจริง ทรัพยากร HTML จะรวมเป็นไฟล์แยกต่างหากและ
    // กลับพร้อมกับไฟล์ HTML ผลลัพธ์เป็นแพ็กเกจ zip
    request.ReturnAsZipArchive = false;
    
    // ดำเนินการแปลงเอกสาร
    Stream response = tasksApi.GetTaskDocumentWithFormat(request);

    if (response != null)
    {
        Console.WriteLine("Successfully converted MPP to XML !");
    }
    
    // วิธีการที่กำหนดเองเพื่อบันทึกไฟล์ผลลัพธ์ลงในไดรฟ์ระบบภายในเครื่อง
    saveToDisk(response, "C:\\Users\\shahbnay\\Downloads\\" + resultant);
}catch (Exception ex)
{
    Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}

// วิธีการบันทึกเนื้อหาสตรีมเป็นวัตถุไฟล์
static void saveToDisk(Stream responseStream, String resultantFile)
{
    var fileStream = File.Create(resultantFile);
    responseStream.Seek(0, SeekOrigin.Begin);
    responseStream.CopyTo(fileStream);
    fileStream.Close();
}

ไฟล์ตัวอย่างที่ใช้ในตัวอย่างข้างต้นสามารถพบได้ที่ Home move plan.mpp และ Converted.xml

MPP เป็น XML โดยใช้คำสั่ง cURL

คำสั่ง cURL มอบกลไกที่ยอดเยี่ยมในการเข้าถึง REST API ผ่านทางเทอร์มินัลบรรทัดคำสั่ง เนื่องจาก Aspose.Tasks Cloud ได้รับการพัฒนาตามหลักการ REST เช่นกัน ดังนั้นเราจึงสามารถเข้าถึง API โดยใช้คำสั่ง cURL ได้เช่นกัน แต่เนื่องจาก API สามารถเข้าถึงได้เฉพาะผู้ที่ได้รับอนุญาตเท่านั้น ดังนั้น เราจึงต้องสร้างโทเค็นการเข้าถึง JWT ตามรายละเอียดรหัสไคลเอนต์และความลับไคลเอนต์ โปรดดำเนินการคำสั่งต่อไปนี้เพื่อสร้างโทเค็นการเข้าถึง JWT

 curl -v "https://api.aspose.cloud/connect/token" \
 -X POST \
 -d "grant_type=client_credentials&client_id=4db2f826-bf9c-42e7-8b2a-8cbca2d15553&client_secret=d757548a9f2558c39c2feebdf85b4c44" \
 -H "Content-Type: application/x-www-form-urlencoded" \
 -H "Accept: application/json"

เพื่ออัปโหลดไฟล์ MPP ไปยังที่จัดเก็บข้อมูลบนคลาวด์ โปรดดำเนินการคำสั่ง cURL ต่อไปนี้

curl -X PUT "https://api.aspose.cloud/v3.0/tasks/storage/file/Home%20move%20plan.mpp" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: multipart/form-data" \
-d {"File":{}}

สุดท้าย ให้เรียกคำสั่งต่อไปนี้เพื่อดำเนินการแปลง MPP เป็นรูปแบบ XML และบันทึกเอาต์พุตลงในไดรฟ์ภายใน (บนเส้นทางที่ระบุ)

curl -X GET "https://api.aspose.cloud/v3.0/tasks/Home%20move%20plan.mpp/format?format=xml&returnAsZipArchive=false" \
-H  "accept: multipart/form-data" \
-H  "authorization: Bearer <JWT Token>" \
-o Converted.xml

บทสรุป

บทความนี้ได้แบ่งปันรายละเอียดเกี่ยวกับวิธีการแปลงไฟล์ Microsoft Project เป็น XML โดยใช้โค้ดสั้นๆ ของ C# .NET นอกจากนี้ โปรดทราบว่า Cloud SDK ทั้งหมดของเราได้รับการพัฒนาภายใต้ใบอนุญาต MIT ดังนั้นคุณสามารถดาวน์โหลดโค้ดสั้นๆ ฉบับสมบูรณ์ได้จาก GitHub หากคุณพบปัญหาใดๆ ในขณะใช้ API หรือมีคำถามที่เกี่ยวข้อง โปรดติดต่อเราผ่าน ฟอรัมสนับสนุนผลิตภัณฑ์ฟรี

บทความที่เกี่ยวข้อง

เราขอแนะนำให้ไปที่ลิงค์ต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ