Thứ Tư, 6 tháng 6, 2012

Mở một tài liệu Word bằng C#

http://nguyenluuvu.com/blog/post/mo-mot-tai-lieu-word-bang-c.php
--   

Mở một tài liệu Word bằng C#


Bài này tôi sẽ hướng dẫn cách sử dụng các tham số được dùng trong việc mở một tài liệu Word hay file nào đó dưới ứng dụng MS Word bằng C#.

Chúng ta hãy cùng xem xét một ví dụ:

 

 

 
        
  1. private void btnGetWordDocument_Click(object sender, EventArgs e)
  2.     
  3. {
  4.     
  5.  
  6.     
  7.             // Tạo một thể hiện của ứng dụng MS Word
  8.     
  9.             ApplicationClass wordApp = new ApplicationClass();
  10.     
  11.  
  12.     
  13.             // Các tham số được sử dụng trong hàm Open được hỗ trợ bởi thư viện API của MS Word
  14.     
  15.             object wFileName = System.IO.Directory.GetCurrentDirectory() + "\\demoMSWordAPI.suo";
  16.     
  17.             object wConfirmConversions = true;
  18.     
  19.             object wReadOnly = true;
  20.     
  21.             object wAddToRecentFiles = true;
  22.     
  23.             object wPasswordDocument = "norikosaika";
  24.     
  25.             object wPasswordTemplate = "";
  26.     
  27.             object wRevert = true;
  28.     
  29.             object wWritePasswordDocument = "";
  30.     
  31.             object wWritePasswordTemplate = "";
  32.     
  33.             object wFormat = WdOpenFormat.wdOpenFormatAuto;
  34.     
  35.             object wEncoding = Microsoft.Office.Core.MsoEncoding.msoEncodingAutoDetect;
  36.     
  37.             object wVisible = true;
  38.     
  39.             object wOpenAndRepair = true;
  40.     
  41.             object wDocumentDirection = WdDocumentDirection.wdRightToLeft;
  42.     
  43.             object wNoEncodingDialog = false;
  44.     
  45.             object wXMLTransform = Missing.Value;
  46.     
  47.  
  48.     
  49.             // Nếu bạn không sử dụng thông số nào đó trong hàm Open thì sử dụng biến này
  50.     
  51.             // với giá trị missing value để truyền vào cho đúng profile của hàm
  52.     
  53.             object nullobj = System.Reflection.Missing.Value;
  54.     
  55.  
  56.     
  57.             // Show cửa sổ ứng dụng Word
  58.     
  59.             wordApp.Visible = true;
  60.     
  61.  
  62.     

  63.     
  64.  
  65.     
  66.             // Solution 1: không sử dụng các thông số không cần thiết ngoai trừ đường dẫn đến file cần mở
  67.     
  68.             //Document doc = wordApp.Documents.Open(
  69.     
  70.             //                                        ref wFileName, ref nullobj, ref nullobj, ref nullobj,
  71.     
  72.             //                                        ref nullobj, ref nullobj, ref nullobj, ref nullobj,
  73.     
  74.             //                                        ref nullobj, ref nullobj, ref nullobj, ref nullobj,
  75.     
  76.             //                                        ref nullobj, ref nullobj, ref nullobj, ref nullobj);
  77.     
  78.  
  79.     
  80.             // Solution 2: Sử dụng các thông số được hỗ trợ
  81.     
  82.              Document doc = wordApp.Documents.Open(
  83.     
  84.                                                    ref wFileName, ref wConfirmConversions, ref wReadOnly ,
  85.     
  86.                                                    ref wAddToRecentFiles, ref wPasswordDocument, ref wPasswordTemplate,
  87.     
  88.                                                    ref wRevert, ref wWritePasswordDocument, ref wWritePasswordTemplate,
  89.     
  90.                                                    ref wFormat, ref wEncoding, ref wVisible, ref wOpenAndRepair,
  91.     
  92.                                                    ref wDocumentDirection, ref wNoEncodingDialog, ref wXMLTransform);
  93.     
  94. }

Note:

- wFileName: Đường dẫn tới file muốn mở. Lưu ý đây phải là đường dẫn tuyệt đối. Không hiểu sao thằng Word này nó không hiểu đường dẫn tương đối mặc dù file cần mở nằm chung file thực thi. Po' chi'u.

Để có thể lấy được đường dẫn tuyệt đối của file cần mở, các bạn lấy đường dẫn tuyệt đối của file thực thi rồi thêm vào tên file muốn mở như sau:

wFileName = System.IO.Directory.GetCurrentDirectory() + "\\demoMSWordAPI.suo"

- wConfirmConversions: được gán giá trị là true nếu muốn xuất hiện hộp thoại Convert File trong trường hợp tập tin được mở không đúng định dạng được hỗ trợ bởi MS Word

- wReadOnly: tập tin được mở chỉ để đọc không thể chỉnh sửa nếu được gán giá trị là true. Chúng ta sẽ thấy điều này khi lưu file

- wAddToRecentFiles: được gán giá trị là true nếu bạn muốn tên tập tin xuất hiện trong danh sách các tập tin được mở gần nhất ở menu File/Recent documents

- wPasswordDocument: mật khẩu được dùng để mở những tài liệu có password.

Nếu trường này là chuỗi rỗng hoặc không được sử dụng làm tham số trong hàm Open, thì khi tài liệu được mở ra sẽ xuất hiện hộp thoại yêu cầu nhập password. Còn nếu được sử dụng làm tham số thì MS Word sẽ sử dụng password này để mở tài liệu mà không cần yêu cầu nhập password.

- wPasswordTemplate: cũng tương tự wPasswordDocument nhưng được sử dụng cho tập tin dạng template.

- wRevert: Nếu trường này được gán giá trị là true thì MS Word sẽ bỏ qua tất cả những thay đổi đối với tập tin cùng tên đang được mở và mở lại tập tin đó. Nếu giá trị là false thì MS Word sẽ active cửa sổ đang mở tập tin đó

- wWritePasswordDocument: hiện tại mình chưa thấy được hiệu ứng của tham số này

- wWritePasswordTemplate: tương tự như wWritePasswordDocument nhưng hiện tại mình vẫn chưa thấy được hiệu ứng của tham số này

- wFormat: chọn định dạng sẽ mở tài liệu này. Có các định dạng sau:


wdOpenFormatAllWord  A Microsoft Word format that is backward compatible with earlier versions of Microsoft Word.
wdOpenFormatAuto  The existing format.
wdOpenFormatDocument  Microsoft Word format.
wdOpenFormatEncodedText        
Encoded text format.
wdOpenFormatRTF  Rich text format (RTF).
wdOpenFormatTemplate  As a Microsoft Word template.
wdOpenFormatText  Unencoded text format.
wdOpenFormatUnicodeText  Unicode text format.
wdOpenFormatWebPages  HTML format.
wdOpenFormatXML  XML format.

- wEncoding: loại bảng mã được sử dụng để mở tài liệu. Danh sách các bảng mã được hỗ trợ nằm trong enum Microsoft.Office.Core.MsoEncoding

- wVisible: Hiển thị tài liệu sau khi mở. Nếu bạn gán giá trị là false thì mặc dù tài liệu đã được mở nhưng sẽ không được thể hiện trong cửa sổ của MS Word.

- wOpenAndRepair: Nếu tài liệu có lỗi tập tin gì thì MS Word sẽ tự động sửa. Khi gán giá trị là true hay nói cách khác là sử dụng biến này thì MS Word sẽ tạo một tập tin mới với nội dung trong tập tin bạn truyền vào.

- wDocumentDirection: hướng thể hiện tài liệu. Có 2 giá trị là:


wdLeftToRight  Left to right.
wdRightToLeft  Right to left.


Bạn sẽ thấy hiệu ứng này khi mở một tài liệu khác Word

- wNoEncodingDialog: Nếu được thiết lập giá trị là true thì MS Word sẽ hiển thị hộp thoại yêu cầu chọn mã encoding khi MS Word không thể nhận ra được bảng mã đang sử dụng.

- wXMLTransform: mình chưa test được dạng này

Không có nhận xét nào:

Đăng nhận xét

(Chơi cho vui) AIRDROP CHAINGE FINANCE - dự án xây dựng ứng dụng ngân hàng số cho mọi người

 Không hiểu lắm về cái này, tuy nhiên thấy quảng cáo khá nhiều, lại chỉ cung cấp vài thông tin cá nhân (mà mấy ông lớn như facebook với goog...