VSTO Excel 2007: включить или вставить рабочую книгу / рабочий лист в надстройку - PullRequest
5 голосов
/ 26 марта 2010

Я хочу включить / внедрить рабочий лист Excel с предопределенным макетом в надстройку Excel, но не могу добавить элемент проекта «Рабочая книга» в свой проект VSTO и не могу добавить ссылку на проект «Рабочая книга Excel» , Так как я могу это сделать?

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

Sven

Ответы [ 2 ]

3 голосов
/ 26 марта 2010

Вот преобразованный код 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 голосов
/ 26 марта 2010

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

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...