在将数据导出到excel / csv angularjs的同时设置列宽和文字包装属性

我已经创build了一个ng-directive来parsing数据,并通过点击应用指令的button将数据导出为ex​​cel。 以下是将数据导出为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中构build整个数据,所以我不能使用HTM页面的CSS属性。 所以我想知道是否有可能通过代码设置像换行和列宽的选项? 或者,如果有什么替代scheme,我想在这里做什么。

  • parsinghtml元素中的data-i18n属性
  • 为什么当我加载我的HTML页面时,我的外部JavaScript文件不工作?
  • 如何设置node-googlemaps? 缺乏关于安装Node包的一些隐含的知识
  • 对于POST请求,nodejs请求从服务器返回null主体
  • Gulp任务不会退出
  • TypeScript和Socket.io
  • 如何使用节点fs将代码段添加到HTML
  • 使用node-xmpp在节点中编写Google CCS服务器时出错
  • 检查这codepen 。 它会尽快下载一个文件,一旦加载。 这是基于我之前在评论中提到的答案 。 它还包括filesaver脚本的缩小版本。 看看TableToExcelvariables,特别是在那里设置的template

    为了您的理解,Excel文件是基于XML的,所以您可以使用简单的HTML样式表来增加宽度,设置颜色或边框。 从codepen,这是表格格式的相关位:

     <table cellspacing="0" rules="rows" border="1" style="color:Black;background-color:White;border-color:#CCCCCC;border-width:1px;border-style:None;width:100%;border-collapse:collapse;font-size:9pt;text-align:center;" > </table> 

    如果您有复杂的要求,这可能会变得复杂。 在这种情况下,Sathish提出使用Excelbuilderjs的build议并不错。

    该codepen需要调整,取决于Excel的版本等,我希望这会让你开始。

    使用CSV,您无法格式化数据或Excel样式。 只是导出数据。

    你可以尝试一些外部工具,如: Excelbuilderjs