downXlsx.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import * as XLSX from "xlsx";
  2. import { saveAs } from "file-saver";
  3. import * as XLSXD from "xlsx-js-style";
  4. // 导出的方法 tHeader => 设置Excel的表格第一行的标题 filterVal => 对象的属性key值 被导出listData => 导出数据 => 导出(文件)名称
  5. import { export_json_to_excel } from "@/tools/excel/Export2Excel"; //引入文件
  6. export function outExportExcel(
  7. tHeader = [],
  8. filterVal = [],
  9. listData = [],
  10. exportName = new Date().getTime()
  11. ) {
  12. // 注意这个Export2Excel路径
  13. const data = formatJson(filterVal, listData);
  14. export_json_to_excel(tHeader, data, exportName);
  15. }
  16. function formatJson(filterVal, jsonData) {
  17. return jsonData.map((v) => filterVal.map((j) => v[j]));
  18. }
  19. const exportExcel = (el, header, title) => {
  20. let $e = el;
  21. try {
  22. let $table = $e.querySelector(".el-table__fixed");
  23. if (!$table) {
  24. $table = $e;
  25. }
  26. const wb = XLSX.utils.table_to_book($table, { raw: true });
  27. if (wb && wb.Sheets.Sheet1) {
  28. let as = ["!cols", "!fullref", "!merges", "!ref", "!rows"];
  29. let bs = header;
  30. for (let i in wb.Sheets.Sheet1) {
  31. if (as.indexOf(i) < 0) {
  32. if (bs.indexOf(wb.Sheets.Sheet1[i].v) >= 0) {
  33. wb.Sheets.Sheet1[i].s = {
  34. font: {
  35. name: "微软雅黑",
  36. sz: 11,
  37. bold: true,
  38. color: { rgb: "ffffff" },
  39. },
  40. alignment: {
  41. horizontal: "center",
  42. vertical: "center",
  43. },
  44. fill: { fgColor: { rgb: "4f81bd" } },
  45. };
  46. if (i === "A1") {
  47. wb.Sheets.Sheet1["!cols"].push({ wch: 30 });
  48. } else if (i === "B1") {
  49. wb.Sheets.Sheet1["!cols"].push({ wch: 20 });
  50. } else {
  51. wb.Sheets.Sheet1["!cols"].push({ wch: 15 });
  52. }
  53. } else {
  54. wb.Sheets.Sheet1[i].s = {
  55. font: {
  56. name: "微软雅黑",
  57. sz: 10,
  58. bold: false,
  59. color: { rgb: "000000" },
  60. },
  61. alignment: {
  62. horizontal: "center",
  63. vertical: "center",
  64. },
  65. // fill:{fgColor: {rgb: '4f81bd'}}
  66. };
  67. }
  68. }
  69. }
  70. }
  71. const wbout = XLSXD.write(wb, {
  72. bookType: "xlsx",
  73. bookSST: true,
  74. type: "array",
  75. });
  76. saveAs(
  77. new Blob([wbout], { type: "application/octet-stream" }),
  78. `${title}.xlsx`
  79. );
  80. } catch (e) {
  81. if (typeof console !== "undefined") console.error(e);
  82. }
  83. };
  84. export default {
  85. exportExcel,
  86. };