在VSTO平台使用C#里的Button控件 怎样实现在Excel里导入Excel/Word文档模板,是导入不是打开。thks解答!如下图

在VSTO平台使用C#里的Button控件 怎样实现在Excel里导入Excel/Word文档模板,是导入不是打开。thks解答!如下图

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,需要在VSTO项目中添加一个按钮控件,代码如下:

    using System.Windows.Forms;
    
    // 在ThisAddIn.cs中的ThisAddIn_Startup方法中添加以下代码
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        // 在Ribbon中添加按钮
        MyRibbon ribbon = Globals.Ribbons.GetRibbon<MyRibbon>();
        ribbon.button1.Click += Button1_Click;
    }
    
    // Button1的点击事件
    private void Button1_Click(object sender, RibbonControlEventArgs e)
    {
        OpenFileDialog dialog = new OpenFileDialog();
        dialog.Filter = "Excel文件 (*.xlsx)|*.xlsx|Word文件 (*.docx)|*.docx";
        dialog.Multiselect = false;
        dialog.ShowDialog();
    
        if (dialog.FileName.EndsWith(".xlsx")) {
            // 导入Excel模板
            ImportExcelTemplate(dialog.FileName);
        } else if (dialog.FileName.EndsWith(".docx")) {
            // 导入Word模板
            ImportWordTemplate(dialog.FileName);
        }
    }
    
    // 导入Excel模板的方法
    private void ImportExcelTemplate(string fileName)
    {
        Excel.Workbook workbook = Globals.ThisAddIn.Application.ActiveWorkbook; // 获取当前活动的工作簿
        Excel.Worksheet worksheet = workbook.ActiveSheet; // 获取当前活动的工作表
    
        // 打开Excel模板文件
        Excel.Workbook templateWorkbook = Globals.ThisAddIn.Application.Workbooks.Open(fileName);
    
        // 复制Excel模板的内容到当前工作表
        Excel.Worksheet templateWorksheet = templateWorkbook.ActiveSheet;
        templateWorksheet.Cells.Copy();
        worksheet.Cells.PasteSpecial();
    
        // 关闭Excel模板文件
        templateWorkbook.Close(false);
    }
    
    // 导入Word模板的方法
    private void ImportWordTemplate(string fileName)
    {
        // 打开Word模板文件
        Word.Application wordApplication = new Word.Application();
        Word.Document document = wordApplication.Documents.Open(fileName);
    
        // 复制Word模板的内容到当前工作表
        document.Content.Copy();
        Globals.ThisAddIn.Application.ActiveSheet.Paste();
    
        // 关闭Word模板文件
        document.Close(false);
        wordApplication.Quit();
    }
    

    然后,需要在Ribbon.xml文件中添加按钮控件,代码如下:

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
      <ribbon>
        <tabs>
          <tab id="tab1" label="Tab1">
            <group id="group1" label="Group1">
              <button id="button1" label="导入模板" size="large" imageMso="PictureInsertFromFile" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>
    

    最后,在解决方案资源管理器中,选择Ribbon,并右键单击,选择“添加新项”,并选择“Ribbon”,该名称为"MyRibbon",然后代码如下:

    using Microsoft.Office.Tools.Ribbon;
    
    public partial class MyRibbon : RibbonBase
    {
        public MyRibbon()
            : base(Globals.Factory.GetRibbonFactory())
        {
            InitializeComponent();
        }
    
        private void MyRibbon_Load(object sender, RibbonUIEventArgs e)
        {
    
        }
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^