excel.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. let process = require('process');
  2. let path = require('path');
  3. let nodeXlsx = require('node-xlsx');
  4. let jsonBeautifully = require('json-beautifully');
  5. let fs = require('fs');
  6. let cwd = process.cwd();
  7. console.log(process.cwd());
  8. let excelArray = [
  9. {
  10. fullPath: "excel/全局表.xls",
  11. name: "全局表.xls",
  12. sheet: "all",
  13. },
  14. {
  15. fullPath: "excel/关卡.xls",
  16. name: "关卡.xls",
  17. sheet: "smalllevel",
  18. },
  19. {
  20. fullPath: "excel/关卡.xls",
  21. name: "关卡.xls",
  22. sheet: "nest",
  23. },
  24. {
  25. fullPath: "excel/关卡.xls",
  26. name: "关卡.xls",
  27. sheet: "monster",
  28. },
  29. {
  30. fullPath: "excel/关卡.xls",
  31. name: "关卡.xls",
  32. sheet: "bullet",
  33. },
  34. ];
  35. jsonSavePath = [path.join(cwd, '../preview-templates/json'), path.join(cwd, '../build-templates/web-desktop/json')]
  36. excelArray = excelArray.map((v)=>{
  37. v.fullPath = path.join(cwd, v.fullPath);
  38. return v;
  39. });
  40. // console.log(excelArray);
  41. // return;
  42. function _getJsonSaveData(excelData, itemSheet) {
  43. let title = excelData[0];
  44. let desc = excelData[1];
  45. let ret = null;
  46. let useFormat1 = false;
  47. if (useFormat1) {
  48. let saveData1 = [];// 格式1:对应的为数组
  49. for (let i = 2; i < excelData.length; i++) {
  50. let lineData = excelData[i];
  51. // if (lineData.length < title.length) {
  52. // continue;
  53. // } else if (lineData.length > title.length) {
  54. // continue;
  55. // }
  56. if(!lineData) continue;
  57. let saveLineData = {};
  58. for (let j = 0; j < title.length; j++) {
  59. let key = title[j];
  60. let value = lineData[j];
  61. if (value === undefined) {
  62. value = "";
  63. }
  64. // this._addLog("" + value);
  65. saveLineData[key] = value;
  66. }
  67. saveData1.push(saveLineData);
  68. }
  69. ret = saveData1;
  70. } else {
  71. let saveData2 = {};// 格式2:id作为索引
  72. for (let i = 2; i < excelData.length; i++) {
  73. let lineData = excelData[i];
  74. // if (lineData.length < title.length) {
  75. // continue;
  76. // } else if (lineData.length > title.length) {
  77. // continue;
  78. // }
  79. if(!lineData || lineData.length == 0) continue;
  80. let saveLineData = {};
  81. for (let j = 1; j < title.length; j++) {
  82. let key = title[j];
  83. let value = lineData[j];
  84. if (value === undefined) {
  85. value = "";
  86. }
  87. // this._addLog("" + value);
  88. saveLineData[key] = value;
  89. }
  90. saveData2[lineData[0].toString()] = saveLineData;
  91. }
  92. ret = saveData2;
  93. }
  94. return ret;
  95. }
  96. function _addLog(str){
  97. console.log(str);
  98. }
  99. let jsonAllSaveData = {};// 保存的json数据
  100. for (let k in excelArray) {
  101. let itemSheet = excelArray[k];
  102. let excelData = nodeXlsx.parse(itemSheet.fullPath);
  103. let sheetData = null;
  104. for (let j in excelData) {
  105. if (excelData[j].name === itemSheet.sheet) {
  106. sheetData = excelData[j].data;
  107. }
  108. }
  109. if (sheetData) {
  110. if (sheetData.length > 2) {
  111. // 保存为json
  112. let jsonSaveData = _getJsonSaveData(sheetData, itemSheet);
  113. {
  114. let saveStr = JSON.stringify(jsonSaveData);
  115. saveStr = jsonBeautifully(saveStr);
  116. jsonSavePath.forEach(element => {
  117. let saveFileFullPath = path.join(element, itemSheet.sheet + ".json");
  118. fs.writeFileSync(saveFileFullPath, saveStr);
  119. _addLog("[Json]:" + saveFileFullPath);
  120. });
  121. }
  122. } else {
  123. _addLog("行数低于2行,无效sheet:" + itemSheet.sheet);
  124. }
  125. } else {
  126. _addLog("未发现数据");
  127. }
  128. }