2016-06-03 5 views
1

Ich versuche, Wörter in einem Microsoft-Word-Dokument mit JavaScript zählen Ich konnte Word in normalen Textdatei zählen. gibt es eine Möglichkeit, dies für eine Microsoft-Word-Datei zu tun, die beispielsweise "JavaScript API for Office" oder eine andere Methode verwendet.Verwenden von JavaScript - How to Count Wörter in Microsoft Word-Dokument?

Kontrolle dieses https://plnkr.co/edit/5TJfNiPxv275GuimdIlj?p=preview

<!DOCTYPE html> 
<html> 

    <head> 
    <link rel="stylesheet" href="style.css"> 
    <script src="script.js"></script> 
    </head> 

    <body> 
    <h2>Microsoft Word Document Count Words! Using JavaScript?</h2> 
    <input type="file" accept=".doc,.txt,.docx" onchange="calculateWords()" id="textDoc"/> 
    <div> 
     <h1 id="fileInformation">File word Count after choose</h1> 
    </div> 
    </body> 

</html> 

JavaScript-Code

function calculateWords() { 
    if (window.File && window.FileReader && window.FileList && window.Blob) { 
     console.log("words"); 
     var doc = document.getElementById("textDoc"); 
     var f = doc.files[0]; 
     if (!f) { 
      alert("Failed to load file"); 
      //validate file types yet to come 
     } else if (false) { 
      alert(f.type + " is not a valid text file."); 
     } else { 
      var r = new FileReader();//create file reader object 
      r.readAsText(f);//read file as text 

      //attach function to execute when loading file finishes. 
      r.onload = function (e) { 
       var contents = e.target.result; 
       var res = contents.split(" "); 
       console.log(res.length); 
       var fileInformation = "word Count = "+res.length; 
      var info = document.getElementById("fileInformation"); 
      info.innerHTML = fileInformation; 

      } 
     } 
    } else { 
     alert('The File APIs are not fully supported by your browser.'); 
    } 
} 

Antwort

2

Microsoft Dokumente zupfen nicht normale Textdateien, wie sind .. sie sind Binärdateien.

Als solche müssten Sie sie in reinen Text dekodieren, alle Formatierungen entfernen, Kopf- und Fußzeilen entfernen und fortfahren. Dies ist eine Signifikanz Herausforderung.

So wie ein einfaches Beispiel, das ist ein Stück einer RTF-Datei:

{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard 
This is some {\b bold} text.\par 
} 

.DOC-Dateien viel komplizierter, aber binär sind. DOCX-Dateien sind noch anders.

Also, in einer einfachen Antwort: Nein, Sie können es nicht tun.

+0

Ja, ich weiß, es ist eine Binärdatei, aber haben Sie sich die JavaScript-API für Office angesehen? Können wir es nicht mit Office-Dateien arbeiten? http://dev.office.com/reference/add-ins/javascript-api-for-office –

+0

Diese Frage ist viel zu breit für StackOverflow. Probieren Sie es aus und lassen Sie uns wissen, wenn Sie auf bestimmte Fragen stoßen. –

+0

derzeit studiere ich es, ich werde meine Frage bearbeiten, wenn ich einige Ergebnisse bekomme Vielen Dank ver –