csv.ftl 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>${file.name}预览</title>
  6. <#include "*/commonHeader.ftl">
  7. <link rel="stylesheet" href="xspreadsheet/xspreadsheet.css"/>
  8. <script src="xspreadsheet/xspreadsheet.js"></script>
  9. <script src="xspreadsheet/is-utf8.js"></script>
  10. <script src="xspreadsheet/xlsx.full.min.js"></script>
  11. <script src="xspreadsheet/xlsxspread.min.js"></script>
  12. <script src="xspreadsheet/zh-cn.js"></script>
  13. <script src="js/base64.min.js" type="text/javascript"></script>
  14. </head>
  15. <#if csvUrl?contains("http://") || csvUrl?contains("https://")>
  16. <#assign finalUrl="${csvUrl}">
  17. <#elseif csvUrl?contains("ftp://") >
  18. <#assign finalUrl="${csvUrl}">
  19. <#else>
  20. <#assign finalUrl="${baseUrl}${csvUrl}">
  21. </#if>
  22. <body>
  23. <div id="htmlout"></div>
  24. <script>
  25. x_spreadsheet.locale('zh-cn');
  26. var HTMLOUT = document.getElementById('htmlout');
  27. var xspr = x_spreadsheet(HTMLOUT);
  28. HTMLOUT.style.height = (window.innerHeight - 400) + "px";
  29. HTMLOUT.style.width = (window.innerWidth - 50) + "px";
  30. var process_wb = (function() {
  31. return function process_wb(wb) {
  32. var data = stox(wb);
  33. xspr.loadData(data);
  34. if(typeof console !== 'undefined') console.log("output", new Date());
  35. };
  36. })();
  37. var url = '${finalUrl}';
  38. var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
  39. if (!url.startsWith(baseUrl)) {
  40. url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
  41. }
  42. let xhr = new XMLHttpRequest();
  43. xhr.open('GET',url); //文件所在地址
  44. xhr.responseType = 'blob';
  45. xhr.onload = () => {
  46. let content = xhr.response;
  47. let blob = new Blob([content]);
  48. let file = new File([blob],'excel.csv',{ type: 'excel/csv' });
  49. var reader = new FileReader();
  50. reader.onload = function(e) {
  51. if(typeof console !== 'undefined') console.log("onload", new Date());
  52. var data = e.target.result;
  53. data = new Uint8Array(data);
  54. let f = isUTF8(data);
  55. if (f) {
  56. try {
  57. var str = cptable.utils.decode(65001, data);
  58. process_wb(XLSX.read(str, { type: "string" }));
  59. } catch (error) {
  60. process_wb(XLSX.read(data));
  61. }
  62. } else {
  63. try {
  64. var str = cptable.utils.decode(936, data);
  65. process_wb(XLSX.read(str, { type: "string" }));
  66. } catch (error) {
  67. process_wb(XLSX.read(data));
  68. }
  69. }
  70. };
  71. reader.readAsArrayBuffer(file);
  72. }
  73. xhr.send();
  74. /*初始化水印*/
  75. if (!!window.ActiveXObject || "ActiveXObject" in window)
  76. {
  77. }else{
  78. initWaterMark();
  79. }
  80. </script>
  81. </body>
  82. </html>