VSTO Excel 2007: Включайте или встройте Рабочую книгу/Рабочий лист в Дополнение

Я хочу включать/встраивать рабочий лист Excel с предопределенным расположением в Дополнении Excel, но я не могу добавить объект проекта "Рабочая книга" к моему проекту VSTO, и при этом я не могу добавить ссылку на проект "Excel Workbook". Таким образом, как я могу сделать это?

Моя цель состоит в том, чтобы создать Дополнение Excel, которое добавляет новый рабочий лист к существующей рабочей книге (который является загрузкой с SAP) к агрегированным данным.

Sven

5
задан Sven Sönnichsen 26 March 2010 в 11:10
поделиться

2 ответа

Создайте книгу, содержащую лист. При необходимости сохраните книгу в качестве шаблона. Внедрение книги в качестве ресурса. Способ преобразования ресурса в книгу или лист будет зависеть от формата документа. Если электронная таблица XML (XMLSS), это довольно просто. Если двоичный (xls или xlt), то вам придется манипулировать ресурсом. Excel не может прочитать поток.

Пример использования надстройки VSTO Excel Project и ресурса проекта

Public Class ThisAddIn

    Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup

        ' Start of VSTO generated code

        Me.Application = CType(Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(GetType(Excel.Application), Me.Application), Excel.Application)

        ' End of VSTO generated code

        'setup a workbook and worksheet for sample code to work
        Dim oWB As Excel.Workbook = Me.Application.Workbooks.Add()
        Dim oWS As Excel.Worksheet = CType(oWB.Worksheets.Add, Excel.Worksheet)

        'create temporary template
        Dim sPath As String = My.Computer.FileSystem.GetTempFileName
        My.Computer.FileSystem.WriteAllBytes(sPath, My.Resources.Book1, False)

        'open with excel
        Dim oTemplate As Excel.Workbook = Me.Application.Workbooks.Add(sPath)

        'specify worksheet from a different workbook
        '   copies the template worksheet into destination workbook
        oTemplate.Worksheets.Copy(oWS)

        'no longer need template
        oTemplate.Close()

        'delete the temporary file
        My.Computer.FileSystem.DeleteFile(sPath)

        'get our worksheet
        Dim oReportWS As Excel.Worksheet = CType(oWB.Worksheets.Item("Template"), Excel.Worksheet)

        'write our data
        CType(oReportWS.Cells(1, 1), Excel.Range).Value2 = "Here I am!"

    End Sub

End Class
3
ответ дан 14 December 2019 в 13:32
поделиться

Вот преобразованный код 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!";
3
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: