CSV-js:用 JavaScript 编写的 CSV

文章展示了如何利用JavaScript函数tableToExcel将结构化数据转换成CSV格式,并生成一个两列列表。该函数通过遍历数据并构建CSV字符串,然后通过创建HTMLa标签实现文件下载。测试数据和调用示例进一步说明了这个过程。
摘要由CSDN通过智能技术生成

1.CSV-js:用 JavaScript 编写的 CSV展示一下调用后的效果生成一个两列列表

2.下面是实现方法

 const tableToExcel = (JsonData: any) => {
    const data = [
      [
        { label: '日期', value: 'Zhou Maomao' },
        { label: '结算周期', value: '1810000000' },
        { label: '客户名称', value: 'Zhou Maomao' },
        { label: '服务提供商', value: '1810000000' },
        { label: '开户银行', value: 'HangzhouZhejiang' },
        { label: '联系人', value: 'Zhou Maomao' },
        { label: '联系电话', value: '1810000000' },
        { label: '开户地址', value: 'HangzhouZhejiang' },
        { label: '联系电话', value: 'Zhou Maomao' },
        { label: '企业名称', value: 'HangzhouZhejiang' },
        { label: '邮箱', value: '1810000000' },
        { label: '银行账号', value: 'HangzhouZhejiang' },
      ],
    ];

    const columnCount = 12;
    const rowCount = data.length;

    let csv = '';

    // Add headers
    for (let i = 0; i < columnCount; i++) {
      csv += `${data[0][i].label},`;
    }
    csv += '\n';

    // Add data rows
    for (let i = 0; i < rowCount; i++) {
      for (let j = 0; j < columnCount; j++) {
        csv += `${data[i][j].value},`;
      }
      csv += '\n';
    }

    // 要导出的json数据
    // 列标题,逗号隔开,每一个逗号就是隔开一个单元格
    let str = `项目编号,项目名称,访谈主题,访谈类型,专家名称,公司名称,职位,客户费率,收费时长(分钟),应收金额(含税)\n`; // 增加\t为了不让表格显示科学计数法或者其他格式;
    for (let i = 0; i < JsonData.length - 1; i++) {
      for (const key in JsonData[i]) {
        const JsonDateLastField = Object.keys(JsonData[i])[Object.keys(JsonData[i]).length - 1];
        if (key !== 'id') {
          if (key === JsonDateLastField) {
            str += `${JsonData[i][key] + '\t'}`;
          } else {
            str += `${JsonData[i][key] + '\t'},`;
          }
        }
      }
      str += '\n';
    }
    // encodeURIComponent解决中文乱码
    const uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(`${csv}+${str}`);
    // 通过创建a标签实现
    const link = document.createElement('a');
    link.href = uri;
    // 对下载的文件命名
    link.download = 'json数据表.csv';
    link.click();
  };

3.测试数据

const defaultData: DataSourceType[] = new Array(6).fill(1).map((_, index) => {
  return {
    id: (Date.now() + index).toString(),
    a: `活动名称${index}`,
    b: '新能源',
    c: 'open',
    d: '1590486176000',
    e: '新能源',
    f: '新能源',
    g: '新能源',
    h: '新能源',
    i: '新能源',
    j: '新能源',
  };
});

4.调用

tableToExcel(dataSource);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值