0

我被告知要编写一个 Excel-Add-In,它将特定的页脚粘贴到工作簿中的每个工作表中。

在阅读了 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 文章简直是愚蠢的。

4

2 回答 2

2

我终于找到了我正在寻找的信息:VSTO

首先,我设置了这两行:

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";
            }
        }
于 2013-01-22T19:24:06.443 回答
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);
于 2013-01-22T15:30:37.317 回答