2010-03-14 49 views
8

Có thể sử dụng SDK XML mở để thao tác các phần của tài liệu hiện đang mở trong ứng dụng Office (word/ppt) hay không. Tôi biết điều dễ nhất là sử dụng VSTO, nhưng nó chậm và sẽ liên quan đến việc sử dụng clipboard để chèn các phần tử, sdX OXML trực tiếp và đơn giản hơn.Mở XML SDK để chỉnh sửa Tài liệu hiện hoạt

Nếu ai đó có thể đăng một số mẫu mã sẽ tuyệt vời.

Cảm ơn trước
Rakesh

Trả lời

-1

Dường như bạn không thể làm điều này mà không cần thêm.

Theo Zeyad Jarabi/..

... bạn cần một nền tảng mà hiểu làm thế nào để tham gia một khóa chia sẻ (như SharePoint hoặc SkyDrive). Nếu không có khái niệm này thì ứng dụng và SDK chỉ có thể đọc hoặc ghi khóa, ngăn chặn hai phần của công nghệ này truy cập vào cùng một tệp.

+0

Thông tin thêm tại đây http://blogs.msdn.com/b/brian_jones/archive/2009/11/23/open-xml-sdk -word-automation-services-presentation-at-pdc.aspx – GustavoTM

+0

Điều này là sai và không liên quan. Đáng buồn thay cũng là câu trả lời được chấp nhận. –

0

Something như dưới đây: -

//include the namespace 

using DocumentFormat.OpenXml.WordProcessing 

//Open and manipulate temp.docx 

using (WordprocessingDocument myDoc = WordprocessingDocument.Open("temp.docx", true)) 
{ 
    //Access main part of document 
    MainDocumentPart mainPart = myDoc.MainDocumentPart; 

    //Add new comments part to document 
    mainPart.AddNewPart<WordprocessingCommentsPart>(); 

    //Delete Styles part within document 
    mainPart.DeletePart(mainPart.StyleDefinitionsPart); 

    //Iterate through all custom xml parts within document 
    foreach (CustomXmlPart customXmlPart in mainPart.CustomXmlParts) { 
     //DO SOMETHING 
    } 
} 

Ngoài ra, bạn có thể sử dụng LINQ để tránh các vòng lặp foreach.

+0

Xin lỗi, nếu tôi không rõ ràng trước đó. Tôi muốn thao tác tài liệu hiện đang mở trong Word. Tôi sẽ tạo một nút trong ruy-băng để thêm các phần vào tài liệu hiện đang hoạt động. Điều này có nghĩa là tài liệu có thể không được lưu khi chạy tác vụ này, do đó, không có đường dẫn tệp. Có cách nào để chuyển đổi đối tượng được kích hoạt thành đối tượng WordProcessingDocument Cảm ơn R – user240282

5

Có thể sửa đổi tài liệu VSTO mở, sử dụng OpenXML sdk 2, sau đó cập nhật tài liệu đang mở của bạn bằng cách sử dụng xml đã thay đổi.

http://msdn.microsoft.com/en-us/library/ff191178.aspx

http://code.msdn.microsoft.com/Improve-Automation-415bff13

Về cơ bản bạn nhận được xml từ một phạm vi, đối xử với nó như một dòng suối, gói nó lên, sử dụng sdk trên bao bì, sau đó chèn xml sửa đổi lại bằng cách đảo ngược quá trình này .

Sự khôn ngoan trong đó là việc sử dụng ý thức chung của sdk là không thể. Tuy nhiên, điều này chỉ là sai.

0

tôi đã có thể làm điều này bằng một tài liệu Excel sử dụng ClosedXML như vậy (sau khi lưu tập tin vào đĩa như con đường excelFileName):

byte[] byteArray = null; 
using (var fs = new FileStream(excelFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { 
    int numBytesToRead = Convert.ToInt32(fs.Length); 
    byteArray = new byte[numBytesToRead]; 
    fs.Read(byteArray, 0, numBytesToRead); 
} 
using (MemoryStream mem = new MemoryStream()) { 
    mem.Write(byteArray, 0, byteArray.Length); 
    XLWorkbook wb = new XLWorkbook(mem); 
    ... 
} 

Trong trường hợp của tôi, tôi chỉ đang đọc tài liệu và sẽ không hãy lưu nó, nhưng bạn có thể viết luồng đã sửa đổi vào một tệp khác nếu cần.

Các vấn đề liên quan