對Excel插件的開發(fā),目的是在工具欄中添加一個外部程序,點擊這個外部程序,可以將當前的Sheet數(shù)據(jù)獲取到并保存到另外一個sheet里面;主要注意兩方面:
一、Excel插件外部程序建立向?qū)В唧w步驟是:
1. |
在 Microsoft Visual Studio .NET
的文件菜單上,單擊新建,然后單擊項目。 |
2. |
在新建項目對話框中,展開項目類型下的其他項目,選擇擴展性項目,然后選擇共享的外接程序模板。 |
3. |
鍵入 MyCOMAddin
作為該外接程序的名稱,然后單擊確定。 |
4. |
“擴展性向?qū)А背霈F(xiàn)后,請按照下列步驟操作:
a. |
在第 1 頁,選擇使用 Visual C#
創(chuàng)建外接程序,然后單擊下一步。 |
b. |
在第 2
頁,選擇下面的宿主應用程序,然后單擊下一步:
" |
Microsoft Word |
" |
Microsoft PowerPoint |
" |
Microsoft Outlook |
" |
Microsoft Excel |
" |
Microsoft Access |
|
c. |
在第 3
頁上,輸入該外接程序的名稱和描述,然后單擊下一步。
注意:該外接程序的名稱和描述出現(xiàn)在 Office 應用程序的 COM
加載項對話框中。
|
d. |
在第 4
頁,選擇所有可用的選項,然后單擊下一步。 |
e. |
單擊完成。 |
|
5. |
在項目菜單上,單擊添加引用。單擊組件列表中的
System.Windows.Forms.DLL,單擊選擇,然后單擊確定。
引用要操作office對象,比如要操作excel,引用了Microsoft.Office.Interop.Excel,可以在微軟的站點查找oxppia.exe文件下載,具體地址:http://download.microsoft.com/download/c/4/8/c4813cc0-a4d4-4bb4-b486-9cbd56f38235/oxppia.exe
|
Excel插件開發(fā)指導說明可以參考微軟的網(wǎng)址:
http://support.microsoft.com/?kbid=302901
二、具體C#對Excel的操作:
1、如何獲取到當前Excel、workbook、worksheet等:
object o =
System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
Excel._Application app = o as
Excel._Application;
Excel.Workbook workBook =
app.ActiveWorkbook;//得到當前活動的excel文檔
Excel._Workbook wr = app.ActiveWorkbook;
if (workBook == null)
{
MessageBox.Show("No workbook is currently defined");
}
Excel.Worksheet xlsSheet;
xlsSheet =
(Excel.Worksheet)workBook.ActiveSheet;//得到當前Sheet
m_iJ = xlsSheet.UsedRange.Rows.Count;//得到當前Sheet行數(shù)
2、各個屬性值:
newWorksheet =
(Excel.Worksheet)workBook.Worksheets.Add(Type.Missing,
Type.Missing, Type.Missing,
Type.Missing);//新增一個Sheet
newWorksheet.Name =
"導入MQC";//設置Sheet的名稱
newWorksheet.get_Range("A1", Missing.Value).Value2 =
"Path";//設置某個單元格的值
newWorksheet.Cells.Clear();//清除單元格里面的值
newWorksheet.Cells.Font.Size = "10";//設置單元格字體大小
問題1 Visual Studio 2005開發(fā)的Office插件無法在Office中運行
這個問題可能是由于沒有安裝KB908002中提到的prerequisite造成的,可以去下面的地址下載該文檔中提到的補?。?a snap_preview_added="spa" parent_link_icon="false" text_trigger="true" icon_trigger="false" act_suffix="" snap_icon_added="spa">http://support.microsoft.com/kb/908002
安裝完成后,我們可以在Add-in的安裝項目的prerequisites中找到一個新的組件。
問題2 如何制作兼容多個版本Office的Office Addin
通常情況下,我們編寫的Add-in都是直接用向?qū)傻?,且使用的是早期綁定技術(early
binding)。但在許多需求中,我們需要制作一個能夠兼容多個Office版本的Add-in,這時我們就不能使用早期綁定了,而應該使用后期綁定(late
binding)。關于早期綁定和后期綁定的詳細信息,請見http://word./FAQs/InterDev/EarlyvsLateBinding.htm
問題3 通常Addin設置保存在注冊表的什么位置
以Office 2003 Word
Add-in為例,通常會保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins中。
假設我們有一個名字為MyAddin1的Addin,那么它就會保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\MyAddin1.Connect中。
對于Excel
Add-in來說,也是類似的,通常保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel\Addins中,依此類推。
對Excel插件的開發(fā),目的是在工具欄中添加一個外部程序,點擊這個外部程序,可以將當前的Sheet數(shù)據(jù)獲取到并保存到另外一個sheet里面;主要注意兩方面:
一、Excel插件外部程序建立向?qū)?,具體步驟是:
1. |
在 Microsoft Visual Studio .NET
的文件菜單上,單擊新建,然后單擊項目。 |
2. |
在新建項目對話框中,展開項目類型下的其他項目,選擇擴展性項目,然后選擇共享的外接程序模板。 |
3. |
鍵入 MyCOMAddin
作為該外接程序的名稱,然后單擊確定。 |
4. |
“擴展性向?qū)А背霈F(xiàn)后,請按照下列步驟操作:
a. |
在第 1 頁,選擇使用 Visual C#
創(chuàng)建外接程序,然后單擊下一步。 |
b. |
在第 2
頁,選擇下面的宿主應用程序,然后單擊下一步:
" |
Microsoft Word |
" |
Microsoft PowerPoint |
" |
Microsoft Outlook |
" |
Microsoft Excel |
" |
Microsoft Access |
|
c. |
在第 3
頁上,輸入該外接程序的名稱和描述,然后單擊下一步。
注意:該外接程序的名稱和描述出現(xiàn)在 Office 應用程序的 COM
加載項對話框中。
|
d. |
在第 4
頁,選擇所有可用的選項,然后單擊下一步。 |
e. |
單擊完成。 |
|
5. |
在項目菜單上,單擊添加引用。單擊組件列表中的
System.Windows.Forms.DLL,單擊選擇,然后單擊確定。
引用要操作office對象,比如要操作excel,引用了Microsoft.Office.Interop.Excel,可以在微軟的站點查找oxppia.exe文件下載,具體地址:http://download.microsoft.com/download/c/4/8/c4813cc0-a4d4-4bb4-b486-9cbd56f38235/oxppia.exe
|
Excel插件開發(fā)指導說明可以參考微軟的網(wǎng)址:
http://support.microsoft.com/?kbid=302901
二、具體C#對Excel的操作:
1、如何獲取到當前Excel、workbook、worksheet等:
object o =
System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
Excel._Application app = o as
Excel._Application;
Excel.Workbook workBook =
app.ActiveWorkbook;//得到當前活動的excel文檔
Excel._Workbook wr = app.ActiveWorkbook;
if (workBook == null)
{
MessageBox.Show("No workbook is currently defined");
}
Excel.Worksheet xlsSheet;
xlsSheet =
(Excel.Worksheet)workBook.ActiveSheet;//得到當前Sheet
m_iJ = xlsSheet.UsedRange.Rows.Count;//得到當前Sheet行數(shù)
2、各個屬性值:
newWorksheet =
(Excel.Worksheet)workBook.Worksheets.Add(Type.Missing,
Type.Missing, Type.Missing,
Type.Missing);//新增一個Sheet
newWorksheet.Name =
"導入MQC";//設置Sheet的名稱
newWorksheet.get_Range("A1", Missing.Value).Value2 =
"Path";//設置某個單元格的值
newWorksheet.Cells.Clear();//清除單元格里面的值
newWorksheet.Cells.Font.Size = "10";//設置單元格字體大小
問題1 Visual Studio 2005開發(fā)的Office插件無法在Office中運行
這個問題可能是由于沒有安裝KB908002中提到的prerequisite造成的,可以去下面的地址下載該文檔中提到的補?。?a snap_preview_added="spa" parent_link_icon="false" text_trigger="true" icon_trigger="false" act_suffix="" snap_icon_added="spa">http://support.microsoft.com/kb/908002
安裝完成后,我們可以在Add-in的安裝項目的prerequisites中找到一個新的組件。
問題2 如何制作兼容多個版本Office的Office Addin
通常情況下,我們編寫的Add-in都是直接用向?qū)傻?,且使用的是早期綁定技術(early
binding)。但在許多需求中,我們需要制作一個能夠兼容多個Office版本的Add-in,這時我們就不能使用早期綁定了,而應該使用后期綁定(late
binding)。關于早期綁定和后期綁定的詳細信息,請見http://word./FAQs/InterDev/EarlyvsLateBinding.htm
問題3 通常Addin設置保存在注冊表的什么位置
以Office 2003 Word
Add-in為例,通常會保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins中。
假設我們有一個名字為MyAddin1的Addin,那么它就會保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\MyAddin1.Connect中。
對于Excel
Add-in來說,也是類似的,通常保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel\Addins中,依此類推。
在每個Add-in的設置屬性中有一個重要的標志LoadBehavior,這個屬性是保存在XXXX.Connect中的,類型為DWORD,這個值直接決定了Addin的啟動模式,默認值為3表示Office應用程序一啟動就運行,這個設置與我們在Addin向?qū)е羞x擇的"I
would like my Add-in to load when the host application
loads"是對應的。
問題4
當確定你的Add-in應該可以正確加載,但在啟動時沒有加載,這是怎么回事
如果一個Add-in因為某些原因在啟動時加載失敗,Office應用程序會自動把LoadBehavior改成8,這表示僅在需要加載時才加載該Add-in,而不是在Office啟動時。所以這時可以到與該Add-in對應的注冊表項中檢查一下LoadBehavior值是否正確,如果為8,一定把它改成3。
在每個Add-in的設置屬性中有一個重要的標志LoadBehavior,這個屬性是保存在XXXX.Connect中的,類型為DWORD,這個值直接決定了Addin的啟動模式,默認值為3表示Office應用程序一啟動就運行,這個設置與我們在Addin向?qū)е羞x擇的"I
would like my Add-in to load when the host application
loads"是對應的。
問題4
當確定你的Add-in應該可以正確加載,但在啟動時沒有加載,這是怎么回事
如果一個Add-in因為某些原因在啟動時加載失敗,Office應用程序會自動把LoadBehavior改成8,這表示僅在需要加載時才加載該Add-in,而不是在Office啟動時。所以這時可以到與該Add-in對應的注冊表項中檢查一下LoadBehavior值是否正確,如果為8,一定把它改成3。
|