从Windows窗体中打开c# word 2013项目

本文关键字:word 2013项目 Windows 窗体 | 更新日期: 2023-09-27 18:02:01

我已经成功构建了一个c# Word 2013项目(ReportGenerator),该项目打开了MS ACCESS数据库并生成了MS Word 2013报告。结果非常好。我的问题是,目前它只能从Visual Studio内部运行。我的老板希望它通过windows窗体运行。

我有能力建立一个新的项目(ReportRunner),其中包含一个窗体与数据网格,填充它,并把一个按钮在它。我缺少的是知道如何做的能力。

    从ReportGenerator中打开报告生成代码ReportRunner的onclick事件
  1. 从reporttrunner传递一个变量到ReportGenerator,以避免硬编码。

我希望能够写一行像"ReportGenerator.ThisDocument。"在按钮的单击事件中调用ThisDocument_Startup "。这是不可能的。

在我的项目中重要的代码位是:

ReportGenerator

    namespace ReportGenerator
    {
      public partial class ThisDocument
      {
        ReportData reportData = new ReportData();
        public void ThisDocument_Startup(object sender, System.EventArgs e)
        {
           int idToLookFor = 2;
           reportData = MyFunctionToReadAccessData(idToLookFor);
           MyFunctionToPutDataIntoReport();
        }
      }
   }

ReportRunner

using ReportGenerator; 
namespace ReportRunner
{
    public partial class Form1 : Form
      private void button1_Click(object sender, EventArgs e)
      {
          int idToLookFor = int.Parse(dataGridView1.CurrentRow.Cells[0].Value.ToString());
         //HOW DO I MAKE IT OPEN REPORT GENERATOR ThisDocument_Startup 
         // AND PASS IT THE idToLookFor
      }
}

从Windows窗体中打开c# word 2013项目

更新:

我很难理解你的评论,所以这里有一些更新:

  1. 您可以使用我提供的链接从单独的c# WinForm调用文档级插件的方法。不管是应用程序级的插件还是文档级的插件,方法都是一样的。

  2. 为什么要构建一个与ReportGenerator插件项目分开的reporttrunner Form项目?正如我在下面所说的,你可以用两个项目创建一个VS解决方案——一个是文档级的插件,另一个是WinForm,你可以简单地从与插件相关的Ribbon中调用WinForm。


我想你是在问如何从一个Word插件从一个Winform调用一个函数?我最近在这里解释了如何做到这一点:如何从单独的c#项目中调用VSTO AddIn方法?

话虽如此,我不建议这样做,因为你可以简单地将你的WinForm与插件打包在一起,然后像这样使用Ribbon打开它:

    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
            Form1 aForm = new Form1();
            aForm.Show();