前端将文本文件转换格式(xlsx,tsv,csv,fa,fasta等)

前端将文本文件转换格式(xlsx,tsv,csv,fa,fasta等)

注意:这里需要转换的文本 有指定格式(大家可以根据具体情况具体转换,方法一样的): tab分隔(\t) 以及换行(\n)

在这里插入图片描述
转换需要的依赖库

import { saveAs } from 'file-saver';
import xlsx from 'node-xlsx';

转换方法

/**
 * 下载txt fasta fa等文本文件
 * @param text 文本内容
 * @param fileName 文件名
 */
const saveTextAsFile = (text: any, filename: string) => {
  const blob = new Blob([text], { type: 'text/plain' });
  const url = URL.createObjectURL(blob);

  const a = document.createElement('a');
  a.href = url;
  a.download = filename;

  document.body.appendChild(a);
  a.click();

  document.body.removeChild(a);
  URL.revokeObjectURL(url);
};
   

  const downTable = () => {
      let path = VITE_APP_URL + `outputs/${tableConfig.taskId}/sample_results.txt`;
      fetch(path).then((res: any) => {
        res.text().then((data: any) => {
          console.log(data);
          // txt下载 因为同属文本格式,无需转换
          saveTextAsFile(data, '多样本表格.txt');
          // tsv下载 因为同属文本格式,无需转换
          saveTextAsFile(data, '多样本表格.tsv');
          // csv下载  将\t 替换为 ,
          let result = data.replace(/\t/g, ',');
          const blob = new Blob(['\uFEFF' + result], { type: 'tsv/plain;charset=utf-8' });
          // @ts-ignore
          saveAs(blob, '多样本表格.csv');

          // xlsx下载(需要将结果转换为 二维数组)
          let xlsxRes: [[]] = data.split('\n').map((item: any) => item.split('\t'));
          let result = xlsx.build([{ name: 'sheet1', data: xlsxRes, options: {} }]);
          // @ts-ignore
          const ab = Buffer.from(result, 'binary');
          const blob = new Blob([ab]);
          saveAs(blob, '多样本表格.xlsx');
        });
      });
    };



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空孤狼啸

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值