程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 記錄Office Add-in開發經驗,officeadd-in

記錄Office Add-in開發經驗,officeadd-in

編輯:C#入門知識

記錄Office Add-in開發經驗,officeadd-in


原創文章轉載請注明出處:@協思, http://zeeman.cnblogs.com

得益於微軟系強大的共通能力和Visual Studio的開發支持,做Office插件不是什麼難事。一點經驗記錄如下:

1. 如果要同時開發Word和Outlook插件,那麼可將復用的代碼封閉到獨立的Library中。

2. 在可安裝.NET Framework 4的系統上,可以嵌入WPF組件。

3. 由於Office的安全模型,安裝部署裡需要可信任證書的簽名。

4. 初始化代碼可在ThisAddIn添加,如Startup、Shutdown、Application.NewMailEx...

 

代碼集錦


1. 獲取文件名:

app = Globals.ThisAddIn.Application;

Path.GetExtension(app.ActiveDocument.FullName)

 

2.檢查文檔是否保存:

app = Globals.ThisAddIn.Application;

if (!app.ActiveDocument.Saved)

{

    if (MessageBox.Show("This command publish the disk version of a file to the server. Do you want to save your changes to disk before proceeding?", "warning",

        MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)

    {

        try

        {

            app.ActiveDocument.Save();

            MessageBox.Show("save succeeded", "information", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }

        catch (Exception ex)

        {

            MessageBox.Show("saved failed." + ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);

            return;

        }

    }

}

 

3. 獲取文檔內容,並添加自己的信息

public byte[] GetDocumentContent(Word.Document wordDoc, string headerText, string footerText)

{

    //使用Mail.RTFBody獲取文檔內容會丟失部分格式,所以這裡還是采用剪貼板方式。

    //復制文檔內容到剪貼板

    wordDoc.Content.Copy();

    using (RichTextBox rtb = new RichTextBox())

    {

        //添加頭部信息

        rtb.AppendText(headerText);

        rtb.SelectAll();

        rtb.SelectionFont = new Font("Courier New", 11);

        rtb.SelectionColor = Color.Green;

        //添加正文

        rtb.Select(rtb.TextLength, 0);

        rtb.Paste();

        Clipboard.Clear();

        //添加尾部信息

        rtb.SelectionFont = new Font("Courier New", 11);

        rtb.SelectionColor = Color.Green;

        rtb.AppendText(footerText);

        using (System.IO.MemoryStream stream = new MemoryStream())

        {

            rtb.SaveFile(stream, RichTextBoxStreamType.RichText);

            return stream.ToArray();

        }

    }

}

 

4. outlook郵件正文轉換為word文檔:

object selObject = currentExplorer.Selection[1];

MailItem mail = selObject as MailItem;

if (mail == null)

{

    MessageBox.Show("non-mail item not supported.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);

    return;

}

Word.Document wordDoc = (Word.Document)mail.GetInspector.WordEditor;

 

資源下載


Office Control Identifiers: http://www.microsoft.com/en-us/download/details.aspx?id=6627

Office Document Extractor: http://code.msdn.microsoft.com/office/CSOfficeDocumentFileExtract-e5afce86


Microsoft Office File Validation Add-in 這個補丁是干什用的

關於Office 2010 文件驗證的相關知識

Office 安全團隊負責測試 Office 文件驗證(代碼名稱:網關守衛)。人們對 Microsoft Office 2010 的新文件驗證功能存在一些誤解,在此我希望消除這些誤解,同時說明原因及具體操作。

一、什麼是Office 2010 文件驗證?

Office文件驗證是一種防范功能。主要是檢查應用程序即解析文件的具體位數,如果確定是有效文件則會按正常方式打開,如果發現文件無效則會發送到(默認情況)受保護的視圖。

二、什麼是網關守衛?

Office 文件驗證是一種功能,該功能最初是在 Publisher 2007 中引入的,用來驗證 Publisher 的PUB 文件。它可驗證特定二進制文件是否符合應用程序的要求。在 Office 2010 中有效擴展了該功能,以包含 Word、Excel 和 PowerPoint 的二進制格式。請注意,該功能僅適用於二進制格式(即PUB、DOC、XLS、PPT 等),而不能驗證基於 XML 的文檔(即 DOCX、XLSX、PPT等),也不能驗證宏或其他自定義項目。它可驗證的對象是文件結構。

三、為什麼要進行驗證?

一直以來,Office 二進制格式的標准不斷演化,復雜性不斷增加。對於這些格式復雜的原因,在其他地方已詳細討論過(請參閱2、3樓的 Joel Spolsky 的文章),因此在此不作探討,但此處完好記錄了這些二進制格式。惡意攻擊者將二進制文件用作攻擊手段來感染目標用戶,因此我們希望找到一種阻止此問題發生的方法。網關守衛采取的一項措施是:當 Microsoft 收到一個新的 Office 文件格式攻擊的報告時,就會通過驗證進行檢查,以了解這項措施的效果。到目前為止,效果相當不錯!

四、如何控制該驗證?

1、通過策略
利用組策略來控制文件驗證失敗時的默認操作。這些策略位於組策略模板中應用程序的“選項”\“安全性”\“信任中心”\“受保護的視圖”下,它視應用程序設置而定。

2、通過注冊表
有以下幾個用來控制 Office 文件驗證的各個方面的注冊表項。

常用注冊表項
HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation \ReportingInterval - 這是一個 DWORD,它可控制顯示將文件發送到 Windows 錯誤報告的對話框的間隔天數。
HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation\DisableReporting - 這是一個 DWORD,如果設置為 1,則禁止顯示對話框(因此禁止向 Windows 錯誤報告發送文件)。

應用程序特定注冊表項
適用於我將使用“Excel”的這些示例,但對“PowerPoint”和“Word”同樣有效
HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\EnableOnLoad – 這是一個 DWORD,如果設置為 0,則 Office 不會驗證......余下全文>>
 

C#開發Office Add-In時,對NET版本要問題

你這個東西今後的使用人群都是用什麼版本的?以他們的需求為主
2007是大趨勢,但是現在不夠普及,操作習慣需要改變太多了,03是很普及,但功能顯然不如07強大,後勁也不如07
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved