2013-01-22 50 views
0

我被告知需要編寫一個將特定頁腳粘貼到工作簿的每個工作表中的Excel加載項。如何使用Excel加載項設置Excel頁腳

讀了Excel.Interop命名空間,我結束了這個毫無價值一段代碼的文檔後:

public partial class Ribbon1 
{ 
    Excel.Application _excelApp; 
    private void Ribbon1_Load(object sender, RibbonUIEventArgs e) 
    { 
     _excelApp = new Excel.Application(); 
    } 

    private void button1_Click(object sender, RibbonControlEventArgs e) 
    { 
     var filename = _excelApp.GetSaveAsFilename(); 
     Excel._Worksheet worksheet = (Excel._Worksheet)_excelApp.ActiveSheet; 
     worksheet.PageSetup.CenterFooter = filename; 
    } 
} 

我有牽制活動工作表有問題。我怎樣才能真正使用這個對象? - 現在它是空的。我發現與這個主題相關的msdn文章只是簡單的愚蠢。

回答

1

我終於找到了我一直在尋找的信息:VSTO

首先我設定的2線:

using Excel = Microsoft.Office.Interop.Excel; 
using Office = Microsoft.Office.Tools.Excel; 

作爲第二步我檢查工作簿是否爲空,然後如果工作表不爲空。如果是這種情況,請將頁腳設置爲文檔。這並不漂亮,但我可以在辦公室明天細化它。

Excel.Workbook Workbook = Globals.ThisAddIn.Application.ActiveWorkbook; 
     if (Workbook != null) 
     { 
      Office.Workbook vstoWorkbook = Globals.Factory.GetVstoObject(Workbook); 

      Excel.Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet; 
      if (worksheet != null) 
      { 
       Office.Worksheet vstoSheet = Globals.Factory.GetVstoObject(worksheet); 
       vstoSheet.PageSetup.CenterFooter = "testing the footer"; 
      } 
     } 
0

一些筆記。首先,您沒有活動工作表,因爲您尚未創建活動工作表,並且Excel默認情況下不會創建一個工作表。

嘗試在你的按鈕單擊事件處理程序(簡化)代碼:

Excel.Workbook workbook = _excelApp.Workbooks.Add(); 
Excel.Worksheet worksheet = workbook.Worksheets[0]; 
worksheet.PageSetup.CenterFooter = filename; 
// Do remaining work here 

此外,線

var filename = _excelApp.GetSaveAsFilename(); 

只返回用戶所選擇的文件名。它實際上並不保存文件。您將需要採取後續行動:

workbook.SaveAs(Filename: filename); 
+0

我不知道我是否正確理解了你,但是如果Excel在打開時不創建工作簿/工作表,應該有一個空白屏幕。 我不想創建一個新的工作簿,我想用這個AddIn被調用的工作簿。直到現在,點擊時沒有設置頁腳 – Marco

+0

如果您是通過COM Addin調用它,則不應該創建Excel.Application類的新實例。這可能是你的問題。您需要使用在「OnConnection」中獲得的類的實例。 –

+0

是的,這是我的原始問題。我如何使用實際打開的Excel實例來設置所需的頁腳和屬性? – Marco