getExcel.js 12 KB

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