VSTO学习(三)——创建Excel解决方案
四、創建Excel外接程序
介紹完了Excel對象模型之后,我們就可以利用這些對象來對Excel文檔進行操作了,下面就創建一個簡單的Excel外接程序的。
首先我們模擬一個需求,大多說軟件在使用時都會彈出一個歡迎界面,這樣我們就創建一個外接程序,每次打開Excel文件時彈出一個歡迎界面,退出時彈出“謝謝使用”界面。
我們只需要在上面的創建工程中介入下面的代碼即可:
復制內容到剪貼板
代碼:
using System.Windows.Forms;
namespace MyExcelAddIn1
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// 因為歡迎使用窗口要在打開Excel的時候彈出,所以把下面代碼放在Startup方法內
MessageBox.Show("歡迎使用Microsoft Excel");
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
// 在退出Excel的時候彈出謝謝使用窗口,所以把下面的代碼放在Shutdown方法內
MessageBox.Show("謝謝使用!");
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
這樣,我們就完成了上面簡單的一個模擬需求了,下面讓我們按F5來測試下效果吧!
按F5運行該程序時,首先打開一個Excel之后,一個歡迎界面就會彈出:
點擊Excel窗口上的"X"按鈕時,就會彈出一個 “謝謝使用!”的窗口,效果如下:
點擊 Ok 按鈕之后才會正常退出Excel。這樣就完成了一個簡單的Excel外接程序了,上面提到過外接程序是應用程序級別的,所以當你每次打開Excel的時候都會有這樣的一個歡迎界面和關閉Excel時都有一個"謝謝使用"窗口,有些朋友想問了,如果我想卸載這個插件怎么辦呢?方法很簡單,只需要右鍵你的解決方案——>清理,這樣可以了,另外你也可以從開發工具選項卡——>COM 插件,在彈出的窗口中選擇你自定義的插件 再按下移除按鈕。具體步驟見下圖:
五、創建Excel文檔級自定義項
介紹完了創建Excel外接程序之后,下面看看如何創建一個文檔級的項目:
1. 新建一個Excel 2010 Workbook(即Excel工作簿)項目:
2. 單擊 OK按鈕,在下面的窗口中單擊 ”OK“按鈕:
3. 在第一創建Excel工作簿項目是會彈出下面的一個窗口(窗口意思為:是否允許創建的項目訪問VBA項目系統),此時我們只需要點擊“Ok”就完成了Excel工作簿項目的創建。
現在我們來模擬一個需求,比如現在有一個成績單工作表,我們希望獲得各科目不及格同學的名字。此時我們只需要在上面創建的工作簿項目中添加一個ComboBox,一個Button,一個textbox。在button的Click事件中添加下面的代碼:
復制內容到剪貼板
代碼:
// 找出各科目不及格同學的名字
private void btnSearch_Click(object sender, EventArgs e)
{
// 清除textbox中的內容
txtResult.Clear();
// 從復選框中獲得選擇的科目索引
int subjectIndex = cbxsubjects.SelectedIndex;
if (subjectIndex == -1)
{
MessageBox.Show("請先選擇一個科目");
return;
}
// 獲得選擇的科目名稱
string subjectName = cbxsubjects.SelectedItem.ToString();
// 獲得工作表對象
Excel.Worksheet worksheet =(Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;
for (int row = 2; row < worksheet.UsedRange.Rows.Count+1; row++)
{
Excel.Range rng =(Excel.Range)worksheet.Cells[row,subjectIndex + 2];
Excel.Range rng1 = (Excel.Range)worksheet.Cells[row, 1];
if (rng.Value< 60)
{
txtResult.Text += rng1.Value + "; ";
}
}
if (txtResult.Text.Length == 0)
{
txtResult.Text = subjectName + "沒有不及格的同學";
}
}
運行該項目結果為:
總結
以上是生活随笔為你收集整理的VSTO学习(三)——创建Excel解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: QuotedPrintable解码
- 下一篇: 关于JSON.stringify和Uni
