Search…

Open XML SDK - Xử Lý Tài Liệu Microsoft Office

23/09/20203 min read
Giới thiệu Open XML SDK xử lý văn bản Microsoft Office - .docx, .xlsx, .pptx với C#.

Giới thiệu

Trong các dự án phần mềm sử dụng nhiều công nghệ, cụ thể là .NET, cần thao tác với văn bản Microsoft Office do yêu cầu của khách hàng:

  • Trích xuất dữ liệu sang file dạng Microsoft Office Excel.
  • Thống kê các dữ liệu từ 1 định dạng khác và lưu vào Excel.
  • Thống kê hóa đơn để in dạng Microsoft Office Word.

Và các nhà phát triển phần mềm .NET cần giải pháp xử lý các văn bản của Microsoft Office, ngoài các thư viện cấp cao hỗ trợ nhiều tính năng tiện ích thì Open XML SDK cũng đáng để được lưu ý do có khả năng can thiệp sâu hơn vào các dạng văn bản này.

Open XML SDK

Open XML SDK là bộ SDK dùng thao tác xử lý trên các văn bản của Microsoft Office dành cho .NET, thời điểm hiện tại Microsoft Office với các cấu trúc file dạng xml như .docx, .pptx, xlsx, ... được hỗ trợ xử lý bởi Open XML SDK.

Open XML SDK không có sẵn trong bộ cài đặt của Visual Studio dành cho .NET, do đó, ta cần chủ động download và cài đặt riêng hoặc có thể cài đặt thư viện này thông qua NuGet.

Cài đặt thư viện thông qua NuGet

Open XML SDK: https://www.nuget.org/packages/Open-XML-SDK/

Ví dụ trích xuất ảnh từ văn bản word

Tạo project

Tạo project dạng Visual C# → Windows Forms Application đặt tên là StdioOffice2Pics với mục đích trích xuất toàn bộ ảnh từ văn bản word.

Tạo giao diện tương tác đơn giản

Tạo form như hình bên dưới bao gồm 1 Button Browse để tìm văn bản word có chứa văn bản word cần xử lý. Button Extract sẽ trích xuất toàn bộ ảnh từ văn bản word và sau đó sẽ lưu các ảnh này tại thư mục chứa văn bản word.

Open XML SDK C#

Tích hợp Open XML SDK vào project

Sử dụng Package Manager Console để cài đặt:

Install-Package Open-XML-SDK

Code mẫu sử dụng Open XML SDK

Thêm namespace vào các form muốn sử dụng OpenXML

using DocumentFormat.OpenXml.Packaging;

Giả sử có đường dẫn đến file .docx cần xử lý là filePath, đoạn code trích xuất tất cả ảnh trong file như sau:

using (WordprocessingDocument document = WordprocessingDocument.Open(m_filePath, true))
{
    var enumerator = document.MainDocumentPart.ImageParts.GetEnumerator();
    int indexPic = 0;

    while (enumerator.MoveNext())
    {
        ImagePart imagePart = enumerator.Current;
        Stream stream = imagePart.GetStream();
        long length = stream.Length;
        byte[] byteStream = new byte[length];
        stream.Read(byteStream, 0, (int)length);

        FileStream fstream = new FileStream(Path.GetDirectoryName(m_filePath) + "\\" + ++indexPic + ".png", FileMode.OpenOrCreate);
        fstream.Write(byteStream, 0, (int)length);
        fstream.Close();
    }
}

Cách sử dụng StdioOffice2Pics

Chạy thử phần mềm và làm theo thao tác:

  • Browse một file word có chứa hình ảnh.
  • Nhấn Extract để phần mềm trích xuất ảnh.
Open XML SDK C#

Kết quả là hình ảnh được trích xuất như bên dưới từ trong file word.

Open SDK XML C#.

Download project mẫu hoàn chỉnh

Trong thư mục StdioOffice2Pics\StdioOffice2Pics\bin chứa phần mềm StdioOffice2Pic.exe và STDIOSampleData.docx, có thể trải nghiệm tính năng chiết xuất ảnh từ file word.

Khi build chương trình cần cài đặt Open XML SDK trước:

Install-Package Open-XML-SDK

StdioOffice2Pics.zip

Tham khảo thêm

https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk - 23/9/2020

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024