wuqingvika 发表于 2023-8-3 11:05

js-export-excel导出来的是文本类型的数字

js-export-excel怎么导出number类型的数字。因为涉及的列比较多 发现导出的都是文本类型数字 怎么去批量定义数字类型呢
大佬们求解

sutramusic 发表于 2023-8-3 11:25

如果是在excel中操作,直接另起一列B3写公式“=B2*1"就可以(假定导出列是B2),再填充B3列,就会变数字型了。再选择B3列复制后粘回B2,不知道我说的对不对。

rwj1990 发表于 2023-8-3 12:51

// 引入 js-export-excel 库
import ExportJsonExcel from 'js-export-excel';

// 例如数据,确保数据是数字类型
const data = [
,
,
// ...
];

// 定义导出选项
const option = {
fileName: 'exported-data', // 导出的文件名
datas: [
    {
      sheetData: data, // 要导出的数据
      sheetName: 'Sheet1', // 工作表名称
      sheetFilter: [], // 可选,数据过滤器
      sheetHeader: [], // 可选,表头
    },
],
};

// 创建导出对象并保存 Excel 文件
const toExcel = new ExportJsonExcel(option);
toExcel.saveExcel();

const options = {
fileName: 'exported-data',
columnTypes: columnTypes,
};

const excel = new ExportJsonExcel(options);
excel.saveExcel();

gun008 发表于 2023-8-3 14:36

本帖最后由 gun008 于 2023-8-3 14:59 编辑

数字前面加上英文单引号
抱歉, 看错了. 我看源码里面有类型判断, 是不是数据源不是数字类型的?
      if (typeof cell.v === "number") cell.t = "n";
      else if (typeof cell.v === "boolean") cell.t = "b";
      else if (cell.v instanceof Date) {
      cell.t = "n";
      cell.z = XLSX.SSF._table;
      cell.v = datenum(cell.v);
      } else if (/^hyperlink:/.test(cell.v)) {
      cell.l = {
          Target: cell.v.replace(/^hyperlink:/, ""),
      };
      cell.v = cell.v.replace(/^hyperlink:/, "");
      } else cell.t = "s";

zach14c 发表于 2023-8-3 15:00

Typescript Example
function exportExcelHandler() {
    interface ExcelOption {
      fileName: string;
      datas: any;
    }
    var option: ExcelOption = {
      fileName: "excel",
      datas: [
      {
      sheetData: [
          ['zach', 100, '100.0'],
          ['zach2',200,'200.0'],
      ],
      },]
    }

    var toExcel = new ExportJsonExcel(option); //new
    toExcel.saveExcel();
}


作者源码自动判定型态部份,如果没特别用string型态,因该是会为数字
      if (typeof cell.v === "number") cell.t = "n";
      else if (typeof cell.v === "boolean") cell.t = "b";
      else if (cell.v instanceof Date) {
      cell.t = "n";
      cell.z = XLSX.SSF._table;
      cell.v = datenum(cell.v);
      } else if (/^hyperlink:/.test(cell.v)) {
      cell.l = {
          Target: cell.v.replace(/^hyperlink:/, ""),
      };
      cell.v = cell.v.replace(/^hyperlink:/, "");
      } else cell.t = "s";

Natu 发表于 2023-8-3 17:10

实际工作中经常遇到这样的问题,不影响数据处理就无视吧,如果影响数据处理就用二楼的方法处理一下也行,方法很多,楼主也可以继续寻找编程处理的方法。

wuqingvika 发表于 2023-8-4 13:49

sutramusic 发表于 2023-8-3 11:25
如果是在excel中操作,直接另起一列B3写公式“=B2*1"就可以(假定导出列是B2),再填充B3列,就会变数字型了 ...

不是 的 客户要求 不要再额外操作,觉得这些导出很基础 不该再额外操作设置了

wuqingvika 发表于 2023-8-4 13:49

rwj1990 发表于 2023-8-3 12:51
// 引入 js-export-excel 库
import ExportJsonExcel from 'js-export-excel';



谢谢大佬 感恩
页: [1]
查看完整版本: js-export-excel导出来的是文本类型的数字