如何使用Excel加载项设置Excel页脚

本文关键字:Excel 页脚 设置 加载项 何使用 | 更新日期: 2023-09-27 17:55:17

我被告知要编写一个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 文章非常愚蠢。

如何使用Excel加载项设置Excel页脚

我终于找到了我要找的信息: 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";
            }
        }

几点注意事项。 首先,您没有活动工作表,因为您尚未创建一个活动工作表,默认情况下 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);