Lưu ý: nó chỉ áp dụng cho các định dạng được sinh ra từ phiên bản Office 2007 trở lên như .docx, .xlsx, .pptx
Tiền đề bài viết
Với nhu cầu thay đổi và cập nhật thêm nhiều lợi ích cho bạn đọc, lẫn sử dụng cho mục đích cá nhân do một số bạn gửi tư liệu cho STDIO nhưng không chiết xuất ảnh sẵn mà ảnh chỉ có trong văn bản, tôi có tìm hiểu về Open XML SDK và làm các ứng dụng cho nội bộ STDIO sử dụng.Đối tượng hướng đến
Các nhà phát triển phần mềm .NET đang tìm hiểu giải pháp xử lý các văn bản của Microsoft Office.Open XML SDK
Open XML SDK là bộ SDK dùng cho việc thao tác xử lý trên các văn bản của Microsoft Office dành cho .NET, tại thời điểm hiện tại ta có Microsoft Office 2013 và phiên bản phù hợp với Microsoft Office 2013 lúc này là Open XML SDK 2.5 nên tôi sẽ chủ yếu viết về phiên bản này, trong tương lai, việc thay đổi và nâng cấp của Microsoft Office có thể kéo theo sự nâng cấp của Open XML SDK nên các bạn cần lưu ý và chủ động về vấn đề này.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.
Download
Open XML SDK 2.5: http://www.microsoft.com/en-us/download/details.aspx?id=30425 - 27/7/2015Hiện tại có 2 bản là OpenXMLSDKV25.msi và OpenXMLSDKToolV25.msi, do không có nhu cầu sử dụng OpenXMLSDKToolV25.msi nên tôi chỉ download SDK cho việc lập trình OpenXMLSDKV25.msi. Nếu bạn có nhu cầu thì có thể download SDK Tool thêm sau.
Cài đặt và môi trường
Cài đặt Open XML SDK 2.5 (OpenXMLSDKV25.msi) sau khi download xong ở bước trên (có yêu cầu .NET Framework 4.0).Như vậy ta đã cài đặt xong OpenXMLSDKV25.msi để có thể sử dụng .NET thao tác với các văn bản của Office.
Ví dụ trích xuất ảnh từ trong 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.Tích hợp Open XML SDK 2.5 vào project
Click phải vào References của Project như hình dưới và chọn Add Reference... để mở ra cửa sổ Reference Manager - StdioOffice2Pics.Lưu ý: nếu bạn chưa biết về Add Reference... bạn có thể đọc tham khảo bài viết sau Add Reference Trong C# (Visual Stdio) :: www.stdio.vn/articles/read/315/add-reference-trong-c-visual-stdio và mục đích của việc làm này là nhằm đưa 1 số thư viện cần thiết vào project.
Ta lưu ý là ta cần 2 thư viện sau: WindowsBase và DocumentFormat.OpenXml.
Add WindowsBase
Assemblies > WindowsBase (chọn check vào WindowsBase)Add DocumentFormat.OpenXml
Nhấn tiếp vào nút Browse... và tìm đến thư mục cài đặt Open XML SDK, nếu không có gì thay đổi thì đường dẫn đó thường là: C:\Program Files (x86)\Open XML SDK\V2.5\lib và bạn chọn DocumentFormat.OpenXml.dll tại thư mục đó và nhấn Add.Nhấn OK để đóng cửa sổ Reference Manager - StdioOffice2Pics
Codes
Thêm namespace sau vào các form muốn sử dụng OpenXMLusing DocumentFormat.OpenXml.Packaging;
Giả sử ta có đường dẫn đến file .docx cần xử lý là m_filePath, ta có đ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.
Kết quả là hình ảnh được trích xuất như bên dưới từ trong file word.
Download project mẫu hoàn chỉnh
Project được xây dựng trên Windows 8.1, Visual Studio 2013 - .NET Framework 4.5, bạn phải cài đặt Open XML SDK 2.5 và Add Reference DocumentFormat.OpenXml.dll lại nếu cần thiết.Trong thư mục StdioOffice2Pics\StdioOffice2Pics\bin chứa phần mềm StdioOffice2Pic.exe và STDIOSampleData.docx giúp bạn có thể trải nghiệm thử tính năng của nó.
DOWNLOAD StdioOffice2Pics.zip
No comments:
Post a Comment