首页 > 解决方案 > 如何在工作表 JS 中设置列​​格式

问题描述

我正在尝试使用带有特定列的 sheetJS 创建一个 xlsx,所有单元格包括空单元格作为文本。我正在使用 json_to_sheet ....

我设法将所有单元格的内容设置为格式单元格屁股文本,但空的单元格设置为“一般”有没有办法找到特定的 cloumn,有没有办法设置列?

downloadExcelFile(data: any[], sheetName: string, header?: string[], filename: string = "export") {
let workbook = XLSX.utils.book_new();
let worksheet = XLSX.utils.json_to_sheet(data, { header: header });
let mifiImsiColumn = XLSX.utils.decode_col("AF"); // 1
let mifiMsisdnColumn = XLSX.utils.decode_col("AG"); // 1
let fmt = '@'; // or '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)' or any Excel number format


/* get worksheet range */
let range = XLSX.utils.decode_range(worksheet['!ref']);
for ( let i = range.s.r + 1; i <= range.e.r; ++i) {
  /* find the data cell (range.s.r + 1 skips the header row of the worksheet) */

  let ref = XLSX.utils.encode_cell({r: i , c: mifiMsisdnColumn});
  let ref1 = XLSX.utils.encode_cell({r: i , c: mifiImsiColumn});

  /* if the particular row did not contain data for the column, the cell will not be generated */
  if (!worksheet[ref] && !worksheet[ref1] ) { continue; }
  /* `.t == "n"` for number cells */
  if (worksheet[ref].t !== 'n'  && worksheet[ref1].t !== 'n' ) {

    worksheet[ref].z = fmt;
    worksheet[ref1].z = fmt; }

}

workbook.SheetNames.push(sheetName);
workbook.Sheets[sheetName] = worksheet;



const wbout = XLSX.write(workbook, {bookType: 'xlsx', bookSST: false, type: 'binary'});


/* the saveAs call downloads a file on the local machine */
FileSaver.saveAs(new Blob([this.s2ab(wbout)], {type: 'application/octet-stream'}), `${filename}.xlsx`);

}

谢谢你的帮助 ..

标签: angulartypes

解决方案


可以使用 excel js 插件来完成。用于ws.getCell('A1').numFmt = '0.00%'标记列号类型百分比。有关更多信息,请参阅https://www.npmjs.com/package/exceljs#number-formats


推荐阅读