VSTO Excel 2007:在外接程序中包含或嵌入工作簿/工作表

VSTO Excel 2007:在外接程序中包含或嵌入工作簿/工作表,excel,vsto,Excel,Vsto,我想在Excel加载项中包含/嵌入具有预定义布局的Excel工作表,但我无法将项目项“工作簿”添加到VSTO项目,也无法添加对“Excel工作簿”项目的引用。那我该怎么做呢 我的目标是构建一个Excel外接程序,将新工作表添加到现有工作簿(从SAP下载)以聚合数据 Sven创建包含工作表的工作簿。如果需要,将工作簿另存为模板。将工作簿作为资源嵌入。如何将资源转换为工作簿/工作表取决于文档格式。如果使用电子表格XML(XMLSS),则相当简单。如果是二进制(xls或xlt),则必须操作资源。Exc

我想在Excel加载项中包含/嵌入具有预定义布局的Excel工作表,但我无法将项目项“工作簿”添加到VSTO项目,也无法添加对“Excel工作簿”项目的引用。那我该怎么做呢

我的目标是构建一个Excel外接程序,将新工作表添加到现有工作簿(从SAP下载)以聚合数据


Sven

创建包含工作表的工作簿。如果需要,将工作簿另存为模板。将工作簿作为资源嵌入。如何将资源转换为工作簿/工作表取决于文档格式。如果使用电子表格XML(XMLSS),则相当简单。如果是二进制(xls或xlt),则必须操作资源。Excel无法读取流

使用VSTO Excel加载项项目和项目资源的示例 以下是C#转换后的代码:

        // setup a workbook and worksheet for sample code to work
        var oWB = Application.Workbooks.Add(missing);
        var oWS = oWB.Worksheets.Add(missing, missing, 1, missing) as Excel.Worksheet;

        // create temporary template
        var sPath = FileSystem.GetTempFileName();
        FileSystem.WriteAllBytes(sPath, Resource.Template, false);

        // open with excel
        var oTemplate = Application.Workbooks.Add(sPath);

        // specify worksheet from a different workbook
        //   copies the first worksheet into destination workbook
        (oTemplate.Worksheets[1] as Excel.Worksheet).Copy(missing, oWS);

        // no longer need template
        oTemplate.Close(false, missing, missing);

        //delete the temporary file
        FileSystem.DeleteFile(sPath);

        var oReportWS = oWB.Worksheets["Template"] as Excel.Worksheet;

        // write our data
        ((oReportWS.Cells[1, 1]) as Excel.Range).Value2 = "Here I am!";
        // setup a workbook and worksheet for sample code to work
        var oWB = Application.Workbooks.Add(missing);
        var oWS = oWB.Worksheets.Add(missing, missing, 1, missing) as Excel.Worksheet;

        // create temporary template
        var sPath = FileSystem.GetTempFileName();
        FileSystem.WriteAllBytes(sPath, Resource.Template, false);

        // open with excel
        var oTemplate = Application.Workbooks.Add(sPath);

        // specify worksheet from a different workbook
        //   copies the first worksheet into destination workbook
        (oTemplate.Worksheets[1] as Excel.Worksheet).Copy(missing, oWS);

        // no longer need template
        oTemplate.Close(false, missing, missing);

        //delete the temporary file
        FileSystem.DeleteFile(sPath);

        var oReportWS = oWB.Worksheets["Template"] as Excel.Worksheet;

        // write our data
        ((oReportWS.Cells[1, 1]) as Excel.Range).Value2 = "Here I am!";