• js导出excel表格并生成多sheet(更改列宽)


    1. //导出方法
    2. function exclePort() {
    3. $.ajax({
    4. data: {
    5. ajaxMethod: 'ajaxExcelPort', //自己封装的方法,调用后台方法
    6. fhspid: top.modemp.FCURRENTCODE,
    7. FDATES: $('#FDATES').val(),
    8. FDATEE: $('#FDATEE').val(),
    9. fmrdid: $("#Medicalrecord").val(),
    10. FID: $("#fidlink").text()
    11. },
    12. type: "post",
    13. dataType: 'json',
    14. cache: false,
    15. async: false,
    16. success: function (data) {
    17. var jsonData = data.dt;
    18. if (jsonData != null) {
    19. tablesToExcel(jsonData, '测试导出' + nowtime() + '.xls', 'Excel');
    20. }
    21. }
    22. });
    23. }
    24. //获取时间戳
    25. function nowtime() {//将当前时间转换成yyyymmdd格式
    26. var mydate = new Date();
    27. var str = "" + mydate.getFullYear();
    28. var mm = mydate.getMonth() + 1
    29. if (mydate.getMonth() > 9) {
    30. str += mm;
    31. }
    32. else {
    33. str += "0" + mm;
    34. }
    35. if (mydate.getDate() > 9) {
    36. str += mydate.getDate();
    37. }
    38. else {
    39. str += "0" + mydate.getDate();
    40. }
    41. return str;
    42. }
    43. //导出excel包含多个sheet
    44. // 增加列宽
    45. //jsonData为json数据集; wbname:文件名;appname:Excel
    46. function tablesToExcel(jsonData, wbname, appname) {
    47. var url = 'data:application/vnd.ms-excel;base64,',
    48. tmplWorkbookXML = ''
    49. + 'Axel Richter{created}'
    50. + ''
    51. + ''
    52. + ''
    53. + ''
    54. + '{worksheets}'
    55. , tmplWorksheetXML = '{rows}
      '
    56. , tmplCellXML = '{data}'
    57. , base64 = function (s) {
    58. return window.btoa(unescape(encodeURIComponent(s)))
    59. }
    60. , format = function (s, c) {
    61. return s.replace(/{(\w+)}/g, function (m, p) {
    62. return c[p];
    63. })
    64. }
    65. var ctx = "";
    66. var workbookXML = "";
    67. var worksheetsXML = "";
    68. var rowsXML = "";
    69. var pil = 0;
    70. for (var i = 0; i < jsonData.length; i++) {
    71. if (i == 0) {
    72. rowsXML += '' +
    73. '病案号' +
    74. '患者姓名' +
    75. '入院日期' +
    76. '出院日期' +
    77. '住院天数' +
    78. '病种名称' +
    79. '缺失类型';
    80. }
    81. rowsXML += '';
    82. for (var key in jsonData[i]) {
    83. ctx = {
    84. nameType: 'String',
    85. data: jsonData[i][key] || "-"
    86. };
    87. rowsXML += format(tmplCellXML, ctx);
    88. }
    89. rowsXML += '';
    90. if (i > 0 && (i / 60000) % 1 === 0) {
    91. pil++;
    92. ctx = { rows: rowsXML, nameWS: '测试导出' + i };
    93. worksheetsXML += format(tmplWorksheetXML, ctx);
    94. rowsXML = "";
    95. rowsXML += '' +
    96. '病案号' +
    97. '患者姓名' +
    98. '入院日期' +
    99. '出院日期' +
    100. '住院天数' +
    101. '病种名称' +
    102. '缺失类型';
    103. }
    104. }
    105. ctx = { rows: rowsXML, nameWS: '测试导出' };
    106. worksheetsXML += format(tmplWorksheetXML, ctx);
    107. rowsXML = "";
    108. ctx = { created: (new Date()).getTime(), worksheets: worksheetsXML };
    109. workbookXML = format(tmplWorkbookXML, ctx);
    110. var link = document.createElement("A");
    111. link.href = url + base64(workbookXML);
    112. link.download = wbname || 'Workbook.xls';
    113. link.target = '_blank';
    114. document.body.appendChild(link);
    115. link.click();
    116. document.body.removeChild(link);
    117. }

    注意:

    因excel导出的条数限制,百度发现excel2003版最多导出6万多条,excel2007版最多导出10万多条.

    因要导出超过十万条数据,所以以xcel2003为例子,每6万条数据增加一个标题、工作区

  • 相关阅读:
    学习笔记1--自动驾驶定位技术概述
    ACE综述
    PGSQL大小写敏感总结
    linux系统中的信号(部分叙述)
    Django(7):视图处理函数
    【HMS core】【FAQ】Account Kit、MDM能力、push Kit典型问题合集6
    支付宝回应网商银行暂停转入功能;美国上诉法院裁决Web抓取合法;W3C发布WebAssembly 2.0初版草案|极客头条
    本文为Mybatis面经,其中难点问题做了详细解释
    【小米】二维定长滑动窗口
    阿里云服务器购买_价格_费用_云服务器ECS——阿里云
  • 原文地址:https://blog.csdn.net/weixin_42064877/article/details/128144551