0

当我下载 xlsx 文件时,“进度”列的标题位于第一个合并列“名称”的后面,我尝试了所有能找到的方法,但没有成功。有人对此有解决方案吗?已经在 Tabulator 的 Github 上询问过,但他们关闭了它并建议我改为在这里询问 - 也会在 SheetJS Github 上询问,但如果有人之前遇到过同样的问题并找到了解决方案,那将非常有帮助。

工作小提琴: https ://jsfiddle.net/millamanjko/qxk4fbam/4/

var tabledata = [{
    id: 1,
    name: "Billy Bob",
    progress: 12,
    gender: "male",
    rating: 95,
    col: "red",
    dob: "14/05/2010"
  },
  {
    id: 2,
    name: "Jenny Jane",
    progress: 42,
    gender: "female",
    rating: 142,
    col: "blue",
    dob: "30/07/1954"
  },
  {
    id: 3,
    name: "Steve McAlistaire",
    progress: 35,
    gender: "male",
    rating: 176,
    col: "green",
    dob: "04/11/1982"
  },
];

var table1 = new Tabulator("#example-table1", {
  data: tabledata,
  downloadConfig: {
    columnGroups: true, //include column groups in column headers for download
  },
  columns: [{
      title: "Name",
      downloadTitle: "Name-download",
      field: "name",
      width: 160
    },
    { //create column group
      title: "Work Info",
      columns: [{
          title: "Progress",
          field: "progress",
          align: "right",
          sorter: "number",
          width: 100
        },
        {
          title: "Rating",
          field: "rating",
          align: "center",
          width: 80
        },
      ],
    },
    { //create column group
      title: "Personal Info",
      columns: [{
          title: "Gender",
          field: "gender",
          width: 90
        },
        {
          title: "Favourite Color",
          field: "col",
          width: 140
        },
        {
          title: "Date Of Birth",
          field: "dob",
          align: "center",
          sorter: "date",
          width: 130
        },
      ],
    },
  ],
});


$("#download-xlsx1").click(function() {
  table1.download("xlsx", "data.xlsx", {
    sheetName: "My Data"
  });
});
<script src="https://oss.sheetjs.com/sheetjs/xlsx.full.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tabulator/4.2.7/css/tabulator.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tabulator/4.2.7/js/tabulator.min.js"></script>


<button id="download-xlsx1">download xlsx file</button>
<div id="example-table1"></div>

4

1 回答 1

1

以防万一其他人可能仍然需要我找到的解决方案,添加 documentProcessing 功能我可以编辑单元格的内容并纠正行为:

https://jsfiddle.net/millamanjko/qxk4fbam/54

$("#download-xlsx1").click(function() {
  table1.download("xlsx", "data.xlsx", {
    documentProcessing: function(workbook) {
      //workbook - sheetJS workbook object

      var ws_name = workbook.SheetNames[0];
      var ws = workbook.Sheets[ws_name];

      // Removes the text from cell A2
      ws["A2"] = {
        t: 's', // <-- t: 's' indicates the cell is a text cell
        v: "" // <-- v holds the value
      };

      // Changes the text from cell B2
      ws["B2"] = {
        t: 's', // <-- t: 's' indicates the cell is a text cell
        v: "Progress" // <-- v holds the value
      };

      return workbook;
    },
  });
});

于 2020-06-15T16:34:27.237 回答