2016-12-01 5 views
0

Ich entwickle ein Büro js Wort Addin.So wählen Sie mehrere Absätze aus der Auswahl

Sagen wir, ich habe drei Absätze in meinem Word-Dokument. Der Benutzer wählt Text von Mitte des ersten Absatzes bis Mitte des zweiten Absatzes aus. Wenn Sie auf eine Schaltfläche in meinem Add-In klicken, sollte das System automatisch den Text ab dem ersten Absatz bis zum Ende des zweiten Absatzes auswählen. Der Benutzer sollte den vollständigen Absatz und nicht Teilabsätze auswählen. Wenn dies der Fall ist, sollte das System automatisch die ganzen Absätze auswählen.

Ich muss wissen, ob wir eine Option haben, einen Bereich in officejs oder auf andere Weise neu zu definieren, um meine Anforderung zu erfüllen.

Vielen Dank im Voraus.

Antwort

0

interessante Frage. Sie können dies tun, wenn Sie die Abrisssammlung eines Bereichs verwenden, in diesem Fall den aktuell ausgewählten Bereich. Die Sammlung absatz (und im Allgemeinen alle Sammlungen in der API von Word js) enthält den vollständigen Absatz, nicht nur, was ausgewählt ist.

Bitte führen Sie dieses Beispiel werden Sie sehen, wie die ganzen Absätze aus einer Teilauswahl gedruckt werden (wie auf Ihrer Frage beschrieben)

Word.run(function(context) { 
 
     // this will return the full paragraphs within the selection: 
 
     var myParagraphs = context.document.getSelection().paragraphs; 
 
     context.load(myParagraphs); 
 

 
     return context.sync() 
 

 
     .then(function(){ 
 
      for(var i=0; i< myParagraphs.items.length; i++){ 
 
       // here you will get the full paragraphs, not just what the user selected. 
 
       console.log("this is full paragraph:" + (i + 1) + ":" + myParagraphs.items[i].text); 
 

 
      } 
 
     }) 
 
    });

Hier ist ein Beispiel dafür, wie Sie wählen Sie die 2 Absätze expandTo mit und wählen Sie ...

Word.run(function (context) { 
 
    var pars = context.document.getSelection().paragraphs; 
 
    pars.load(); 
 

 
    return context.sync().then(function() { 
 
    pars.items[0].getRange().expandTo(pars.items[pars.items.length - 1].getRange()).select(); 
 
     
 
     return context.sync() 
 

 
    }).catch(function (error) { 
 
     console.log(error.message); 
 
    }); 
 
})

Hoffe, dies bringt Sie auf den richtigen Weg! -Juan,

+0

Ich muss wissen, wie wir beide Absätze in meinem oben genannten Szenario auswählen können. In Interop können wir den Bereich neu definieren und auswählen. Ich bin nicht sicher, ob es eine Möglichkeit gibt, das in OfficeJS zu erreichen ** Bearbeiten: ** Ich habe bemerkt, dass Sie vorgeschlagen haben, expandTo-Methode in http://stackoverflow.com/questions/39279377 zu verwenden. Können Sie mir sagen, wie wir den Bereich in meinem Szenario erweitern können (der Benutzer wählt Teilabsätze [beginnend von Mitte 1. Para bis Mitte 2. Para] und programmgesteuert muss ich ganzen Absatz auswählen)? – CSS

+0

Sie können den Bereich jedes Absatzes mit paragraph.getRange() erhalten, dann können Sie es mit range.expandTo() erweitern und zuletzt, wenn Sie die Bereiche erweitert haben, können Sie range.Select() –

+0

Das ist was ich auch dachte und hier ist der Code, den ich bisher habe. https://jsfiddle.net/bkuzmdsb/#&togetherjs=7uFHoTVdw5 – CSS

Verwandte Themen