Results 1 to 15 of 15

Thread: Aanmaken van een xlsx met openXML

  1. #1

    Aanmaken van een xlsx met openXML

    Ik ben al een tijdje bezig om een goed voorbeeld te vinden waar men een xlsx file maakt in de codebehind van Delphi Prism.

    Ik kan via msdn.com de hele api doorlezen en hier staan ook keurig voorbeelden bij die je in c# en vb kunt gebruiken. Maar niet in Delpi Prism.

    het loopt bij mij spaak als ik de volgende regel code invoer
    Code:
    _WorksheetPart := _WorkbookPart.AddNewPart(of _WorksheetPart)();
    Ik heb een c# achtergrond en weet eigenlijk niet goed hoe ik deze regel om moet zetten naar delphi prism code. Kunnen jullie mij opweg helpen of een goed voorbeeld geven. Alvast bedankt

  2. #2
    Allereerst natuurlijk welkom op NLDelphi!

    Helaas heb ik geen antwoord voor je, Prism en ik zijn geen vriendjes Daarom ben ik wel nieuwsgierig: waarom Prism als C# je achtergrond is? Je kunt het altijd mixen natuurlijk en dit deel gewoon in good old C# doen.
    Marcel

  3. #3
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,703
    Misschien heeft Kawa wel het licht gezien?

    Geintje natuurlijk... welkom Kawa!
    TMemoryLeak.Create(Nil);

  4. #4
    Registered User
    Join Date
    May 2002
    Posts
    6
    Blog Entries
    1
    Quote Originally Posted by Kawa View Post
    het loopt bij mij spaak als ik de volgende regel code invoer
    Code:
    _WorksheetPart := _WorkbookPart.AddNewPart(of _WorksheetPart)();
    Heb je zo een link naar dat artikel?

    Trouwens, met de nieuwste versie van Delphi Prism kun je een "Convert C# to Delphi" uitvoeren :-).

  5. #5
    Ik weet niet of dit de pagina is die Kawa heeft gebruikt, maar het lijkt me een goed startpunt: http://msdn.microsoft.com/en-us/libr...container.aspx
    Marcel

  6. #6
    ik ben al weer een klein stukje verder .

    Ik gebruik als voorbeeld dit (msdn.com)

    Code:
    public static void CreateSpreadsheetWorkbook(string filepath)
    {
        // Create a spreadsheet document by supplying the filepath.
        // By default, AutoSave = true, Editable = true, and Type = xlsx.
        SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.
            Create(filepath, SpreadsheetDocumentType.Workbook);
    
        // Add a WorkbookPart to the document.
        WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
        workbookpart.Workbook = new Workbook();
    
        // Add a WorksheetPart to the WorkbookPart.
        WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
        worksheetPart.Worksheet = new Worksheet(new SheetData());
    
        // Add Sheets to the Workbook.
        Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
            AppendChild<Sheets>(new Sheets());
    
        // Append a new worksheet and associate it with the workbook.
        Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.
            GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
        sheets.Append(sheet);
    
        workbookpart.Workbook.Save();
    
        // Close the document.
        spreadsheetDocument.Close();
    }
    Nu loop ik vast op deel van het aanmaken van de sheet

    Code:
     _Sheets := _Spreadsheet.WorkbookPart.Workbook.AppendChild<Sheets>(New Sheets());
       _Sheet := new Sheet();
       _Sheet.Id := _Spreadsheet.WorkbookPart.GetIdOfPart(_WorksheetPart);
       _Sheet.SheetId := 1;
       _Sheet.Name := "HalloExcel";
       _Sheets.Append(_Sheet);
    Nu krijg ik op _sheet.SheetID := 1; een error. (Error 71 (PE19) There is no overloaded method "set_SheetId" with these parameters)

    Geen idee waarom.

    @offTopic: mijn werkgever maakt gebruik van delphi prism en delphi en om die ontwikkel ik dus in deze taal.

  7. #7
    Registered User
    Join Date
    May 2002
    Posts
    6
    Blog Entries
    1
    Quote Originally Posted by Kawa View Post
    ik ben al weer een klein stukje verder .
    Nu krijg ik op _sheet.SheetID := 1; een error. (Error 71 (PE19) There is no overloaded method "set_SheetId" with these parameters)
    Geen idee waarom.
    Volgens MSDN is SheetId geen value maar een class:
    http://msdn.microsoft.com/en-us/libr...t.sheetid.aspx
    http://msdn.microsoft.com/en-us/libr...t.sheetid.aspx
    http://msdn.microsoft.com/en-us/libr...nt32value.aspx

    Waarom dat in C# wel kan weet ik niet
    Dus misschien instantie maken? Of SheetID.Value := 1?

    Edit: Hier gebruiken ze "new UInt32Value(i)" dus idd een nieuwe instantie met de integer als parameter

    Quote Originally Posted by Kawa View Post
    @offTopic: mijn werkgever maakt gebruik van delphi prism en delphi en om die ontwikkel ik dus in deze taal.
    Een goede werkgever dus! :-) Welke als ik vragen mag?

  8. #8
    Weer een stapje verder. aanmaken gaat volgens het code fragment. Alleen nu kan ik heb niet openen in Excel

  9. #9
    Wat geeft Excel voor melding?
    Marcel

  10. #10
    Melding: dit bestand heeft een indeling die door Microsoft Office Excel niet wordt herkend.

  11. #11
    Hmm, kun je je testbestand eens posten?
    Marcel

  12. #12

  13. #13
    Registered User
    Join Date
    May 2002
    Posts
    6
    Blog Entries
    1
    Quote Originally Posted by Kawa View Post
    Ik krijg een lege sheet te zien met de naam "HalloExcel" (Office 2007)

  14. #14
    ja ik had het gezien. Mijn office 2003 wil hem blijkbaar niet goed omzetten. Dan maar even testen in openoffice.

    Bedankt voor jullie hulp

  15. #15
    Dat klopt volgens mij, OpenXML hebben we toch pas sinds Office 2007?
    Marcel

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •