Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

Export2Excel.js 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. /* eslint-disable */
  2. import { saveAs } from 'file-saver'
  3. import XLSX from 'xlsx'
  4. function generateArray(table) {
  5. var out = [];
  6. var rows = table.querySelectorAll('tr');
  7. var ranges = [];
  8. for (var R = 0; R < rows.length; ++R) {
  9. var outRow = [];
  10. var row = rows[R];
  11. var columns = row.querySelectorAll('td');
  12. for (var C = 0; C < columns.length; ++C) {
  13. var cell = columns[C];
  14. var colspan = cell.getAttribute('colspan');
  15. var rowspan = cell.getAttribute('rowspan');
  16. var cellValue = cell.innerText;
  17. if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
  18. //Skip ranges
  19. ranges.forEach(function (range) {
  20. if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
  21. for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
  22. }
  23. });
  24. //Handle Row Span
  25. if (rowspan || colspan) {
  26. rowspan = rowspan || 1;
  27. colspan = colspan || 1;
  28. ranges.push({
  29. s: {
  30. r: R,
  31. c: outRow.length
  32. },
  33. e: {
  34. r: R + rowspan - 1,
  35. c: outRow.length + colspan - 1
  36. }
  37. });
  38. };
  39. //Handle Value
  40. outRow.push(cellValue !== "" ? cellValue : null);
  41. //Handle Colspan
  42. if (colspan)
  43. for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
  44. }
  45. out.push(outRow);
  46. }
  47. return [out, ranges];
  48. };
  49. function datenum(v, date1904) {
  50. if (date1904) v += 1462;
  51. var epoch = Date.parse(v);
  52. return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
  53. }
  54. function sheet_from_array_of_arrays(data, opts) {
  55. var ws = {};
  56. var range = {
  57. s: {
  58. c: 10000000,
  59. r: 10000000
  60. },
  61. e: {
  62. c: 0,
  63. r: 0
  64. }
  65. };
  66. console.log('rrrrr',data);
  67. for (var R = 0; R != data.length; ++R) {
  68. for (var C = 0; C != data[R].length; ++C) {
  69. if (range.s.r > R) range.s.r = R;
  70. if (range.s.c > C) range.s.c = C;
  71. if (range.e.r < R) range.e.r = R;
  72. if (range.e.c < C) range.e.c = C;
  73. var cell = {
  74. v: data[R][C]
  75. };
  76. if (cell.v == null) continue;
  77. var cell_ref = XLSX.utils.encode_cell({
  78. c: C,
  79. r: R
  80. });
  81. if (typeof cell.v === 'number') cell.t = 'n';
  82. else if (typeof cell.v === 'boolean') cell.t = 'b';
  83. else if (cell.v instanceof Date) {
  84. cell.t = 'n';
  85. cell.z = XLSX.SSF._table[14];
  86. cell.v = datenum(cell.v);
  87. } else cell.t = 's';
  88. ws[cell_ref] = cell;
  89. }
  90. }
  91. if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
  92. return ws;
  93. }
  94. function Workbook() {
  95. if (!(this instanceof Workbook)) return new Workbook();
  96. this.SheetNames = [];
  97. this.Sheets = {};
  98. }
  99. function s2ab(s) {
  100. var buf = new ArrayBuffer(s.length);
  101. var view = new Uint8Array(buf);
  102. for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  103. return buf;
  104. }
  105. export function export_table_to_excel(id) {
  106. var theTable = document.getElementById(id);
  107. var oo = generateArray(theTable);
  108. var ranges = oo[1];
  109. /* original data */
  110. var data = oo[0];
  111. var ws_name = "SheetJS";
  112. var wb = new Workbook(),
  113. ws = sheet_from_array_of_arrays(data);
  114. /* add ranges to worksheet */
  115. // ws['!cols'] = ['apple', 'banan'];
  116. ws['!merges'] = ranges;
  117. /* add worksheet to workbook */
  118. wb.SheetNames.push(ws_name);
  119. wb.Sheets[ws_name] = ws;
  120. var wbout = XLSX.write(wb, {
  121. bookType: 'xlsx',
  122. bookSST: false,
  123. type: 'binary'
  124. });
  125. saveAs(new Blob([s2ab(wbout)], {
  126. type: "application/octet-stream"
  127. }), "test.xlsx")
  128. }
  129. export function export_json_to_excel({
  130. multiHeader = [],
  131. header,
  132. data,
  133. filename,
  134. merges = [],
  135. autoWidth = true,
  136. bookType = 'xlsx'
  137. } = {}) {
  138. /* original data */
  139. filename = filename || 'excel-list'
  140. data = [...data]
  141. data.unshift(header);
  142. console.log('wwwww',data);
  143. for (let i = multiHeader.length - 1; i > -1; i--) {
  144. data.unshift(multiHeader[i])
  145. }
  146. console.log('qqqqq',data);
  147. var ws_name = "SheetJS";
  148. var wb = new Workbook(),
  149. ws = sheet_from_array_of_arrays(data);
  150. if (merges.length > 0) {
  151. if (!ws['!merges']) ws['!merges'] = [];
  152. merges.forEach(item => {
  153. console.log(XLSX.utils.decode_range(item))
  154. ws['!merges'].push(XLSX.utils.decode_range(item))
  155. })
  156. }
  157. if (autoWidth) {
  158. /*设置worksheet每列的最大宽度*/
  159. const colWidth = data.map(row => row.map(val => {
  160. /*先判断是否为null/undefined*/
  161. if (val == null) {
  162. return {
  163. 'wch': 10
  164. // 'wch': 1
  165. };
  166. }
  167. /*再判断是否为中文*/
  168. else if (val.toString().charCodeAt(0) > 255) {
  169. return {
  170. 'wch': val.toString().length * 2
  171. };
  172. } else {
  173. return {
  174. 'wch': val.toString().length
  175. };
  176. }
  177. }))
  178. /*以第一行为初始值*/
  179. let result = colWidth[0];
  180. for (let i = 1; i < colWidth.length; i++) {
  181. for (let j = 0; j < colWidth[i].length; j++) {
  182. // console.log('7777',result[j]['wch'] ,colWidth[i][j]['wch']);
  183. // if(colWidth[i][j]['wch']!=''){
  184. if (result[j]['wch'] < colWidth[i][j]['wch']) {
  185. result[j]['wch'] = colWidth[i][j]['wch'];
  186. }
  187. // }
  188. }
  189. }
  190. ws['!cols'] = result;
  191. }
  192. /* add worksheet to workbook */
  193. wb.SheetNames.push(ws_name);
  194. wb.Sheets[ws_name] = ws;
  195. var wbout = XLSX.write(wb, {
  196. bookType: bookType,
  197. bookSST: false,
  198. type: 'binary'
  199. });
  200. saveAs(new Blob([s2ab(wbout)], {
  201. type: "application/octet-stream"
  202. }), `${filename}.${bookType}`);
  203. }
  204. export function export_json_to_excel1({
  205. multiHeader = [],
  206. header,
  207. data,
  208. filename,
  209. ref,
  210. merges = [],
  211. autoWidth = true,
  212. bookType = 'xlsx'
  213. } = {}) {
  214. /* original data */
  215. filename = filename || 'excel-list'
  216. data = [...data]
  217. data.unshift(header);
  218. for (let i = multiHeader.length - 1; i > -1; i--) {
  219. data.unshift(multiHeader[i])
  220. }
  221. var ws_name = "SheetJS";
  222. var wb = new Workbook(),
  223. ws = sheet_from_array_of_arrays(data);
  224. if (merges.length > 0) {
  225. if (!ws['!merges']) ws['!merges'] = [];
  226. merges.forEach(item => {
  227. console.log(XLSX.utils.decode_range(item))
  228. ws['!merges'].push(XLSX.utils.decode_range(item))
  229. })
  230. }
  231. if (autoWidth) {
  232. /*设置worksheet每列的最大宽度*/
  233. const colWidth = data.map(row => row.map(val => {
  234. /*先判断是否为null/undefined*/
  235. if (val == null) {
  236. return {
  237. 'wch': 10
  238. };
  239. }
  240. /*再判断是否为中文*/
  241. else if (val.toString().charCodeAt(0) > 255) {
  242. return {
  243. 'wch': val.toString().length * 2
  244. };
  245. } else {
  246. return {
  247. 'wch': val.toString().length
  248. };
  249. }
  250. }))
  251. /*以第一行为初始值*/
  252. let result = colWidth[0];
  253. for (let i = 1; i < colWidth.length; i++) {
  254. for (let j = 0; j < colWidth[i].length; j++) {
  255. if (result[j]['wch'] < colWidth[i][j]['wch']) {
  256. result[j]['wch'] = colWidth[i][j]['wch'];
  257. }
  258. }
  259. }
  260. ws['!cols'] = result;
  261. }
  262. /* add worksheet to workbook */
  263. wb.SheetNames.push(ws_name);
  264. wb.Sheets[ws_name] = ws;
  265. try {
  266. const $e = ref
  267. let $table = $e.querySelector('.el-table__fixed')
  268. if(!$table) {
  269. $table = $e
  270. }
  271. const wb = XLSX.utils.table_to_book($table, {raw:true})
  272. const wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST:true, type: 'array'})
  273. var wbout = XLSX.write(wb, {
  274. bookType: bookType,
  275. bookSST: false,
  276. type: 'binary'
  277. });
  278. saveAs(new Blob([s2ab(wbout)], {
  279. type: "application/octet-stream"
  280. }), `${filename}.${bookType}`);
  281. } catch (e) {
  282. if (typeof console !== 'undefined') console.error(e)
  283. }
  284. }
  285. export function export_json_to_excel2({
  286. multiHeader = [],
  287. header,
  288. data,
  289. filename,
  290. merges = [],
  291. autoWidth = true,
  292. bookType = 'xlsx'
  293. } = {}) {
  294. /* original data */
  295. filename = filename || 'excel-list'
  296. data = [...data]
  297. // data.unshift(header);
  298. console.log('wwwww',data);
  299. for (let i = multiHeader.length - 1; i > -1; i--) {
  300. data.unshift(multiHeader[i])
  301. }
  302. console.log('qqqqq',data);
  303. var ws_name = "SheetJS";
  304. var wb = new Workbook(),
  305. ws = sheet_from_array_of_arrays(data);
  306. if (merges.length > 0) {
  307. if (!ws['!merges']) ws['!merges'] = [];
  308. merges.forEach(item => {
  309. console.log(XLSX.utils.decode_range(item))
  310. ws['!merges'].push(XLSX.utils.decode_range(item))
  311. })
  312. }
  313. if (autoWidth) {
  314. /*设置worksheet每列的最大宽度*/
  315. const colWidth = data.map(row => row.map(val => {
  316. /*先判断是否为null/undefined*/
  317. if (val == null) {
  318. return {
  319. 'wch': 10
  320. };
  321. }
  322. /*再判断是否为中文*/
  323. else if (val.toString().charCodeAt(0) > 255) {
  324. return {
  325. 'wch': val.toString().length * 2
  326. };
  327. } else {
  328. return {
  329. 'wch': val.toString().length
  330. };
  331. }
  332. }))
  333. /*以第一行为初始值*/
  334. let result = colWidth[0];
  335. for (let i = 1; i < colWidth.length; i++) {
  336. for (let j = 0; j < colWidth[i].length; j++) {
  337. if (result[j]['wch'] < colWidth[i][j]['wch']) {
  338. result[j]['wch'] = colWidth[i][j]['wch'];
  339. }
  340. }
  341. }
  342. ws['!cols'] = result;
  343. }
  344. /* add worksheet to workbook */
  345. wb.SheetNames.push(ws_name);
  346. wb.Sheets[ws_name] = ws;
  347. var wbout = XLSX.write(wb, {
  348. bookType: bookType,
  349. bookSST: false,
  350. type: 'binary'
  351. });
  352. saveAs(new Blob([s2ab(wbout)], {
  353. type: "application/octet-stream"
  354. }), `${filename}.${bookType}`);
  355. }
  356. export function export_json_to_excel3({
  357. multiHeader = [],
  358. header,
  359. data,
  360. filename,
  361. merges = [],
  362. autoWidth = true,
  363. bookType = 'xlsx'
  364. } = {}) {
  365. /* original data */
  366. filename = filename || 'excel-list'
  367. data = [...data]
  368. data.unshift(header);
  369. console.log('wwwww',data);
  370. for (let i = multiHeader.length - 1; i > -1; i--) {
  371. data.unshift(multiHeader[i])
  372. }
  373. console.log('qqqqq',data);
  374. var ws_name = "SheetJS";
  375. var wb = new Workbook(),
  376. ws = sheet_from_array_of_arrays(data);
  377. if (merges.length > 0) {
  378. if (!ws['!merges']) ws['!merges'] = [];
  379. merges.forEach(item => {
  380. console.log(XLSX.utils.decode_range(item))
  381. ws['!merges'].push(XLSX.utils.decode_range(item))
  382. })
  383. }
  384. if (autoWidth) {
  385. /*设置worksheet每列的最大宽度*/
  386. const colWidth = data.map(row => row.map(val => {
  387. /*先判断是否为null/undefined*/
  388. if (val == null) {
  389. return {
  390. 'wch': 10
  391. // 'wch': 1
  392. };
  393. }
  394. /*再判断是否为中文*/
  395. else if (val.toString().charCodeAt(0) > 255) {
  396. return {
  397. 'wch': val.toString().length * 2
  398. };
  399. } else {
  400. return {
  401. 'wch': val.toString().length
  402. };
  403. }
  404. }))
  405. /*以第一行为初始值*/
  406. let result = colWidth[0];
  407. for (let i = 1; i < colWidth.length; i++) {
  408. for (let j = 0; j < colWidth[i].length; j++) {
  409. // console.log('7777',result[j]['wch'] ,colWidth[i][j]['wch']);
  410. if(colWidth[i][j]['wch']!=''){
  411. if (result[j]['wch'] < colWidth[i][j]['wch']) {
  412. result[j]['wch'] = colWidth[i][j]['wch'];
  413. }
  414. }
  415. }
  416. }
  417. ws['!cols'] = result;
  418. }
  419. /* add worksheet to workbook */
  420. wb.SheetNames.push(ws_name);
  421. wb.Sheets[ws_name] = ws;
  422. var wbout = XLSX.write(wb, {
  423. bookType: bookType,
  424. bookSST: false,
  425. type: 'binary'
  426. });
  427. saveAs(new Blob([s2ab(wbout)], {
  428. type: "application/octet-stream"
  429. }), `${filename}.${bookType}`);
  430. }