Генерация текстового документа с использованием Json Array в angularjs - PullRequest
0 голосов
/ 10 июня 2019

У меня есть массив объектов Json следующим образом:

[{name: test1, age:20},{name: test2, age:23},{name: test3, age:30}]

Я хочу напечатать эти значения в таблице в документе Microsoft Word.По-другому, я хочу сгенерировать текстовый документ с указанными выше значениями в таблице, используя angularjs.Как я могу продолжить?

1 Ответ

1 голос
/ 10 июня 2019

Я мог бы добиться этого без использования сторонних библиотек следующим образом.Здесь я отображаю значения в таблице HTML, и эта таблица преобразуется в документ Word.

<script>
$scope.arrayValFunc = function()
{
$scope.arrayVal =[];
//some code to assign values to the json array

}

$scope.downloadWordDoc = Export2Doc(element, filename = ''){
    var preHtml = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>Export HTML To Doc</title></head><body>";
    var postHtml = "</body></html>";
    var html = preHtml+document.getElementById(element).innerHTML+postHtml;

    var blob = new Blob(['\ufeff', html], {
        type: 'application/msword'
    });

    // Specify link url
    var url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html);

    // Specify file name
    filename = filename?filename+'.doc':'document.doc';

    // Create download link element
    var downloadLink = document.createElement("a");

    document.body.appendChild(downloadLink);

    if(navigator.msSaveOrOpenBlob ){
        navigator.msSaveOrOpenBlob(blob, filename);
    }else{
        // Create a link to the file
        downloadLink.href = url;

        // Setting the file name
        downloadLink.download = filename;

        //triggering the function
        downloadLink.click();
    }

    document.body.removeChild(downloadLink);
}

</script>

<html>
<div id="divOne">
<table>
<tr ng-repeat="record in arrayVal">
<th>Name</th>
<th>Age</th>
<tr>
<td>{{record.name}}</td>
<td>{{record.age}}</td>
</tr>
</div>
<input type="submit" ng-click="downloadWordDoc('divOne');"/>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...