Я создал ng-директиву, которая анализирует данные и экспортирует данные, чтобы преуспеть, нажав кнопку, на которую применяется директива. Вот код для экспорта данных в формат csv.
angular.module('employeesApp')
.directive('exportdetailsCsv', ['$parse', 'DetailsManagerService', function ( $parse, DetailsManagerService) {
return {
restrict: 'A',
scope: false,
link: function(scope, element, attrs) {
var data = '';
var csv = {
stringify: function(str) {
return '"' +
str.replace(/^\s\s*/, '').replace(/\s*\s$/, '') // trim spaces
.replace(/"/g,'""') + // replace quotes with double quotes
'"';
},
generate: function(claimDetails, employeeCode, employeeName) {
var dataToExport = claimDetails;
var dataLength = Object.keys(dataToExport).length;
var tableColumnsCount = Object.keys(dataToExport).length;
var row1 = [];
row1.push("Title");
row1.push(dataToExport["title"]);
var row2 = [];
row2.push("Employee Name");
row2.push(employeeName);
var row3 = [];
row3.push("Employee Code");
row3.push(employeeCode);
var row4 = [];
row4.push("Project");
row4.push(dataToExport["project"]);
data = row1 + "\n" + row2 + "\n" + row3 + "\n" + row4;
},
link: function(fileName, inData, fileType) {
var bData = inData ? inData : data;
if (bData && bData.length > 0) {
var blob = new Blob([bData], {type: (fileType || "text/csv") + ";charset=utf-8"});
saveAs(blob, fileName || 'Details.csv');
data = [];
}
}
};
$parse(attrs.exportdetailsCsv).assign(scope.$parent, csv);
}
};
}]);
Проблема, с которой я сталкиваюсь, заключается в том, что экспортируемые данные больше, чем ширина столбца по умолчанию для листа excel, что приводит к тому, что отображаемые данные усекаются в распечатке из excel. Проблема здесь в том, что, когда я строю все данные в JS, я не могу использовать CSS-свойства HTM-страницы. Поэтому я хочу знать, можно ли установить такой параметр, как перенос слов и ширина столбца через код? Или, если есть какая-то альтернатива тому, что я пытаюсь сделать здесь.