getExcel.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. import Excel from 'exceljs'
  2. let getBuffer = function(){
  3. return new Promise((resolve,reject)=>{
  4. const x = new XMLHttpRequest();
  5. x.open("GET", 'file/附件 5 :学校创客专项资金使用申请表.xlsx', true);
  6. x.responseType = "blob"; //
  7. x.send()
  8. x.onreadystatechange = function(){
  9. if(x.readyState==4 && x.status==200){
  10. let reader = new FileReader();
  11. console.log(x.response);
  12. reader.readAsArrayBuffer(x.response) //读取返回回来的文件内容
  13. reader.onload = function(){ //当读取操作成功完成时调用
  14. console.log(reader);
  15. resolve(reader.result) //reader.result返回文件内容
  16. }
  17. }
  18. }
  19. })
  20. }
  21. export default async function getExcel(data){ //async 申明 function 是异步的,而 await 等待某个操作完成。
  22. // console.log(data);
  23. const content = await getBuffer(); //等待getBuffer函数执行完成
  24. const workbook = new Excel.Workbook();
  25. await workbook.xlsx.load(content); //从 buffer 加载
  26. //获取第一个worksheet
  27. let worksheet = workbook.getWorksheet(1);
  28. // 在这里设置表格的内容
  29. //项目类型
  30. // worksheet.getCell("G2").value='项目类型:创客空间 □ 创客实践室 □ 个人创客 □ 创客活动 □ '
  31. //项目名称
  32. worksheet.getCell('G3').value=`项目名称:${data.PName}`;
  33. //备注
  34. worksheet.getCell("G18").value=data.remarks;
  35. // let direct = 7;
  36. //直接经费预算 从C7====>C11
  37. for(let i in data.direct.budget){
  38. switch(i){
  39. case "facility":
  40. if(data.direct.budget[i]!=0)worksheet.getCell("C7").value=data.direct.budget[i];
  41. break;
  42. case "cl":
  43. if(data.direct.budget[i]!=0)worksheet.getCell("C8").value=data.direct.budget[i];
  44. break;
  45. case "jg":
  46. if(data.direct.budget[i]!=0)worksheet.getCell("C9").value=data.direct.budget[i];
  47. break;
  48. case "xz":
  49. if(data.direct.budget[i]!=0)worksheet.getCell("C10").value=data.direct.budget[i];
  50. break;
  51. case "qt":
  52. if(data.direct.budget[i]!=0)worksheet.getCell("C11").value=data.direct.budget[i];
  53. break;
  54. }
  55. }
  56. //直接经费已支付D7====>D11
  57. for(let i in data.direct.expended){
  58. switch(i){
  59. case "facility":
  60. if(data.direct.expended[i]!=0)worksheet.getCell("D7").value=data.direct.expended[i];
  61. break;
  62. case "cl":
  63. if(data.direct.expended[i]!=0)worksheet.getCell("D8").value=data.direct.expended[i];
  64. break;
  65. case "jg":
  66. if(data.direct.expended[i]!=0)worksheet.getCell("D9").value=data.direct.expended[i];
  67. break;
  68. case "xz":
  69. if(data.direct.expended[i]!=0)worksheet.getCell("D10").value=data.direct.expended[i];
  70. break;
  71. case "qt":
  72. if(data.direct.expended[i]!=0)worksheet.getCell("D11").value=data.direct.expended[i];
  73. break;
  74. }
  75. }
  76. //直接经费本次申请E7====>E11
  77. for(let i in data.direct.apply){
  78. switch(i){
  79. case "facility":
  80. if(data.direct.apply[i]!=0)worksheet.getCell("E7").value=data.direct.apply[i];
  81. break;
  82. case "cl":
  83. if(data.direct.apply[i]!=0)worksheet.getCell("E8").value=data.direct.apply[i];
  84. break;
  85. case "jg":
  86. if(data.direct.apply[i]!=0)worksheet.getCell("E9").value=data.direct.apply[i];
  87. break;
  88. case "xz":
  89. if(data.direct.apply[i]!=0)worksheet.getCell("E10").value=data.direct.apply[i];
  90. break;
  91. case "qt":
  92. if(data.direct.apply[i]!=0)worksheet.getCell("E11").value=data.direct.apply[i];
  93. break;
  94. }
  95. }
  96. //直接经费事由G7====>G11
  97. for(let i in data.direct.reason){
  98. switch(i){
  99. case "reason":
  100. worksheet.getCell("G7").value=data.direct.reason[i];
  101. break;
  102. case "reason1":
  103. worksheet.getCell("G8").value=data.direct.reason[i];
  104. break;
  105. case "reason2":
  106. worksheet.getCell("G9").value=data.direct.reason[i];
  107. break;
  108. case "reason3":
  109. worksheet.getCell("G10").value=data.direct.reason[i];
  110. break;
  111. case "reason4":
  112. worksheet.getCell("G11").value=data.direct.reason[i];
  113. break;
  114. }
  115. }
  116. //间接经费预算C13====>C17
  117. for(let i in data.indirect.budget){
  118. switch(i){
  119. case "facility":
  120. if(data.indirect.budget[i]!=0)worksheet.getCell("C13").value=data.indirect.budget[i];
  121. break;
  122. case "cl":
  123. if(data.indirect.budget[i]!=0)worksheet.getCell("C14").value=data.indirect.budget[i];
  124. break;
  125. case "jg":
  126. if(data.indirect.budget[i]!=0)worksheet.getCell("C15").value=data.indirect.budget[i];
  127. break;
  128. case "xz":
  129. if(data.indirect.budget[i]!=0)worksheet.getCell("C16").value=data.indirect.budget[i];
  130. break;
  131. case "qt":
  132. if(data.indirect.budget[i]!=0)worksheet.getCell("C17").value=data.indirect.budget[i];
  133. break;
  134. }
  135. }
  136. //间接经费已支付D13====>D17
  137. for(let i in data.indirect.expended){
  138. switch(i){
  139. case "facility":
  140. if(data.indirect.expended[i]!=0)worksheet.getCell("D13").value=data.indirect.expended[i];
  141. break;
  142. case "cl":
  143. if(data.indirect.expended[i]!=0)worksheet.getCell("D14").value=data.indirect.expended[i];
  144. break;
  145. case "jg":
  146. if(data.indirect.expended[i]!=0)worksheet.getCell("D15").value=data.indirect.expended[i];
  147. break;
  148. case "xz":
  149. if(data.indirect.expended[i]!=0)worksheet.getCell("D16").value=data.indirect.expended[i];
  150. break;
  151. case "qt":
  152. if(data.indirect.expended[i]!=0)worksheet.getCell("D17").value=data.indirect.expended[i];
  153. break;
  154. }
  155. }
  156. //间接经费本次申请E13====>E17
  157. for(let i in data.indirect.apply){
  158. switch(i){
  159. case "facility":
  160. if(data.indirect.apply[i]!=0)worksheet.getCell("E13").value=data.indirect.apply[i];
  161. break;
  162. case "cl":
  163. if(data.indirect.apply[i]!=0)worksheet.getCell("E14").value=data.indirect.apply[i];
  164. break;
  165. case "jg":
  166. if(data.indirect.apply[i]!=0)worksheet.getCell("E15").value=data.indirect.apply[i];
  167. break;
  168. case "xz":
  169. if(data.indirect.apply[i]!=0)worksheet.getCell("E16").value=data.indirect.apply[i];
  170. break;
  171. case "qt":
  172. if(data.indirect.apply[i]!=0)worksheet.getCell("E17").value=data.indirect.apply[i];
  173. break;
  174. }
  175. }
  176. //间接经费本次申请G13====>G17
  177. for(let i in data.indirect.reason){
  178. switch(i){
  179. case "reason":
  180. worksheet.getCell("G13").value=data.indirect.reason[i];
  181. break;
  182. case "reason1":
  183. worksheet.getCell("G14").value=data.indirect.reason[i];
  184. break;
  185. case "reason2":
  186. worksheet.getCell("G15").value=data.indirect.reason[i];
  187. break;
  188. case "reason3":
  189. worksheet.getCell("G16").value=data.indirect.reason[i];
  190. break;
  191. case "reason4":
  192. worksheet.getCell("G17").value=data.indirect.reason[i];
  193. break;
  194. }
  195. }
  196. //自动计算的单元格
  197. //直接经费
  198. //小型仪器设备费余额
  199. worksheet.getCell("F7").value = {formula:"C7-D7-E7",result:worksheet.getCell("C7")-worksheet.getCell("D7")-worksheet.getCell("E7")}
  200. //材料费余额
  201. worksheet.getCell("F8").value = {formula:"C8-D8-E8",result:worksheet.getCell("C8")-worksheet.getCell("D8")-worksheet.getCell("E8")}
  202. //测试化验加工费余额
  203. worksheet.getCell("F9").value = {formula:"C9-D9-E9",result:worksheet.getCell("C9")-worksheet.getCell("D9")-worksheet.getCell("E9")}
  204. //项目协作费余额
  205. worksheet.getCell("F10").value = {formula:"C10-D10-E10",result:worksheet.getCell("C10")-worksheet.getCell("D10")-worksheet.getCell("E10")}
  206. //其他支出余额
  207. worksheet.getCell("F11").value = {formula:"C11-D11-E11",result:worksheet.getCell("C11")-worksheet.getCell("D11")-worksheet.getCell("E11")}
  208. //总预算
  209. worksheet.getCell("C6").value = {formula:"SUM(C7:C11)",result:worksheet.getCell("C7")*1+worksheet.getCell("C8")*1+worksheet.getCell("C9")*1+worksheet.getCell("C10")*1+worksheet.getCell("C11")*1}
  210. //已支付
  211. worksheet.getCell("D6").value = {formula:"SUM(D7:D11)",result:worksheet.getCell("D7")*1+worksheet.getCell("D8")*1+worksheet.getCell("D9")*1+worksheet.getCell("D10")*1+worksheet.getCell("D11")*1}
  212. //本次申请
  213. worksheet.getCell("E6").value = {formula:"SUM(E7:E11)",result:worksheet.getCell("E7")*1+worksheet.getCell("E8")*1+worksheet.getCell("E9")*1+worksheet.getCell("E10")*1+worksheet.getCell("E11")*1}
  214. //余额
  215. worksheet.getCell("F6").value = {formula:"C6-D6-E6",result:worksheet.getCell("C6")*1-worksheet.getCell("D6")*1-worksheet.getCell("E6")*1}
  216. //间接经费
  217. //项目成果鉴定费余额
  218. worksheet.getCell("F13").value = {formula:"C13-D13-E13",result:worksheet.getCell("C13")-worksheet.getCell("D13")-worksheet.getCell("E13")}
  219. //参展参赛费余额
  220. worksheet.getCell("F14").value = {formula:"C14-D14-E14",result:worksheet.getCell("C14")-worksheet.getCell("D14")-worksheet.getCell("E14")}
  221. //创客交流活动费余额
  222. worksheet.getCell("F15").value = {formula:"C15-D15-E15",result:worksheet.getCell("C15")-worksheet.getCell("D15")-worksheet.getCell("E15")}
  223. //知识产权事务费余额
  224. worksheet.getCell("F16").value = {formula:"C16-D16-E16",result:worksheet.getCell("C16")-worksheet.getCell("D16")-worksheet.getCell("E16")}
  225. //其他支出余额
  226. worksheet.getCell("F17").value = {formula:"C17-D17-E17",result:worksheet.getCell("C17")-worksheet.getCell("D17")-worksheet.getCell("E17")}
  227. //总预算
  228. worksheet.getCell("C12").value = {formula:"SUM(C13:C17)",result:worksheet.getCell("C13")*1+worksheet.getCell("C14")*1+worksheet.getCell("C15")*1+worksheet.getCell("C16")*1+worksheet.getCell("C17")*1}
  229. //已支付
  230. worksheet.getCell("D12").value = {formula:"SUM(D13:D17)",result:worksheet.getCell("D13")*1+worksheet.getCell("D14")*1+worksheet.getCell("D15")*1+worksheet.getCell("D16")*1+worksheet.getCell("D17")*1}
  231. //本次申请
  232. worksheet.getCell("E12").value = {formula:"SUM(E13:E17)",result:worksheet.getCell("E13")*1+worksheet.getCell("E14")*1+worksheet.getCell("E15")*1+worksheet.getCell("E16")*1+worksheet.getCell("E17")*1}
  233. //余额
  234. worksheet.getCell("F12").value = {formula:"C12-D12-E12",result:worksheet.getCell("C12")*1-worksheet.getCell("D12")*1-worksheet.getCell("E12")*1}
  235. //经费支出
  236. //总预算
  237. worksheet.getCell("C5").value = {formula:"SUM(C6+C12)",result:worksheet.getCell("C6")*1+worksheet.getCell("C12")*1}
  238. //总支出
  239. worksheet.getCell("D5").value= {formula:"SUM(D6+D12)",result:worksheet.getCell("D6")*1+worksheet.getCell("D12")*1}
  240. //总申请
  241. worksheet.getCell("E5").value = {formula:"SUM(E6+E12)",result:worksheet.getCell("E6")*1+worksheet.getCell("E12")*1}
  242. //总余额
  243. worksheet.getCell("F5").value = {formula:"SUM(F6+F12)",result:worksheet.getCell("F6")*1+worksheet.getCell("F12")*1}
  244. //下载excel文件
  245. let blob = new Blob([await workbook.xlsx.writeBuffer()], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"});
  246. let url = window.URL.createObjectURL(blob); // 字符内容转变成blob地址
  247. const link = document.createElement('a');
  248. link.style.display = 'none';
  249. link.href = url;
  250. link.setAttribute('download', '学校创客专项资金使用申请表.xlsx');
  251. document.body.appendChild(link);
  252. link.click();
  253. document.body.removeChild(link);
  254. }