Webpaginas maken met Excel Web App mashups

Pagina's in dit artikel

  1. Voorbereidingen
  2. JavaScript
  3. Web formulier
  4. Demo met besturing
  5. Dynamische demo
  6. Conclusie

De inhoud van web pagina besturingselementen in het Excel bestand plaatsen

Zou het niet handig zijn om een web formulier te kunnen maken waar gebruikers gegevens in kunnen voeren en vervolgens deze invoer te kunnen gebruiken om de Excel Web App wordt bijgewerkt met de inhoud van het web formulier. Hoe dat moet wordt hieronder beschreven.

Voeg een formulier in met enkele besturingselementen

Om gegevens uit een tekstvak in je Excel bestand te krijgen moet er natuurlijk eerst een formulier op je web pagina geplaatst worden. Deze HTML code is daarvoor nodig:

<form name="ChangeInput">
    Fase verschil (graden)&nbsp;
    <input name="Phase" size="18" style="width: 112px" />
    Frequentie verhouding&nbsp;
    <input name="Freq" size="18" style="width: 112px" />
    <input onclick="JavaScript:SetValuesInSheet();" type="button" value="Grafiek bijwerken" />
</form>

Zoals je kan zien, is het klik event van de knop ingesteld om de Javascript functie SetValuesInSheet aan te roepen.

Data in een cel invoeren

De SetValuesInSheet functie is relatief kort:

function SetValuesInSheet()
    {
    // Get a reference to where we need to write
    ewaCht.getActiveWorkbook().getRangeA1Async('b1:b2', getRangeA1Callback, null);
    }

Zoals je kan zien, vragen we eerst Ewa om een verwijzing naar het celbereik B1:B2 in het actieve werkblad. Dit gebeurt hier asynchroon, dus hebben we een call-back functie nodig: getRangeA1Callback. Hieronder weergegeven :

function getRangeA1Callback(asyncResult)
        {
        // getRangeA1Async returns a range object through the AsyncResult object.
        var range = asyncResult.getReturnValue();
        var values = new Array(2);
        values[0] = new Array(1);
        values[1] = new Array(1);
        var control = document.ChangeInput.Phase;
        values[0][0] = control.value;
        control = document.ChangeInput.Freq;
        values[1][0] = control.value;
        // Now send the array to the range.
        range.setValuesAsync(values,Dummy,null);
}

Als je de data naar een cel wil schrijven, heb je altijd een array nodig, zoals bovenstaande code toont.

Omdat setValuesAsync -wederom- asynchroon is, is er een callback noodzakelijk, waarvoor ik een lege functie genaamd Dummy (hier niet weergegeven) heb gebruikt. Dummy kan door "null" worden vervangen als je geen verdere acties nodig hebt.

Werkt dit nou? Bekijk de volgende pagina!


 


Vragen, suggesties en opmerkingen

Heeft u vragen, suggesties of opmerkingen? Gebruik dan dit formulier.

Mocht uw vraag niet direct relevant zijn voor deze pagina, maar een algemene Excel vraag betreffen, dan adviseer ik om deze hier te stellen: excelexperts.nl/forum/index.php.




Als u VBA code in uw commentaar plaatst, gebruik dan [VB] tags: [VB]Uw code[/VB].