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#](https://resources.stdio.vn/content/article/5ef61dafa37a5e67beb4420d/resources/res-1600836562-1600836562490.png)
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#](https://resources.stdio.vn/content/article/5ef61dafa37a5e67beb4420d/resources/res-1600836727-1600836727199.png)
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#.](https://resources.stdio.vn/content/article/5ef61dafa37a5e67beb4420d/resources/res-1600836757-1600836757993.png)
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
Tham khảo thêm
https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk - 23/9/2020