首页 > 其他分享 >js导入excel&导出excel

js导入excel&导出excel

时间:2023-05-23 14:02:55浏览次数:58  
标签:xlsx const name any excel js 导入 col

js导入excel&导出excel

 

Excel导入

html代码

<button style={{ color: '#1890ff', fontSize: '14px', cursor: 'pointer' }} onClick={() => { upFile(); }} > 
  导入
</button> 
<input id="upFile" type="file" style={{ display: 'none' }} accept=".xlsx, .xls" onChange={upChange} />

js代码

import XLSX from 'xlsx';
const upFile = () => {
    const upSdaFile: any = document.getElementById('upFile');
    upSdaFile.click();
};
const upChange = (e) => {
    const file = e.target.files[0]; // 获取第一个文件
    const reader = new FileReader();
    reader.readAsBinaryString(file); // 读取这个文件
    reader.onload = function (event) {
      try {
        const { result }: any = event.target;
        const xlsxData = XLSX.read(result, { type: 'binary' }); // 读取xlsx
        let col: any = null;
        // @ts-ignore
        for (const n in xlsxData.Sheets) { // eslint-disable-line
          // 这里是多张表格 所以写一个循环
          col = XLSX.utils.sheet_to_json(xlsxData.Sheets[n], { header: 1, defval: '', blankbook: true }); // 解析为数组
        }
        if(col.length === 0) {
          e.target.value = '';// 解决二次提交不生效
          return message.warning(`本次导入${col.length}条数据,范例数据请勿删除!`);
        }
        console.log('col', col);
        e.target.value = ''; // 解决二次提交不生效
      } catch (err) {
        e.target.value = '';
        console.log('err', err);
      }
    };
  };

 注意不要引用 0.18.几的xlsx,和其他文件冲突报错找不到,要安装 "xlsx": "0.17.0"

Excel导出

html代码

<Button onClick={() => ecportExcel()} > 导出 </Button>

js代码

复制代码
const jsonData = [
  { name: '张三', age: 12, gender: '男' },
  { name: '李四', age: 14, gender: '男' },
  { name: '王五', age: 15, gender: '女' },
]
// 前端实现导出
const ecportExcel = (jsonData: any) => {
  // 列标题,逗号隔开,每一个逗号就是隔开一个单元格
  let str = `序号,名称,年龄,性别\n`;
  const tableData: any = []
  jsonData.forEach((el: any, index: number) => {
    tableData.push({
      index: index + 1,
      name: el?.name || '',
      age: el?.age || '',
      gender: el?.gender || '',
    })
  });
  // 增加\t为了不让表格显示科学计数法或者其他格式
  for (let i = 0; i < tableData.length; i++) { // eslint-disable-line
    for (const key in tableData[i]) { // eslint-disable-line
      str += `${`${tableData[i][key]}\t`},`;
    }
    str += '\n';
  }
  // encodeURIComponent解决中文乱码
  const uri = `data:text/xlsx;charset=utf-8,\ufeff${encodeURIComponent(str)}`;
  // 通过创建a标签实现
  const link = document.createElement("a");
  link.href = uri;
  // 对下载的文件命名
  link.download = "企业承诺汇总.xlsx";
  link.click();
}

标签:xlsx,const,name,any,excel,js,导入,col
From: https://www.cnblogs.com/webSnow/p/17424475.html

相关文章

  • 8百多经典古诗学习鉴赏ACCESS\EXCEL数据库
    虽然古诗类的数据搞到过很多,但是有鉴赏、译文等鉴赏类字段的还是很少,而今天搞到一个古诗学习类数据库,虽然记录数不多,但大都有翻译、鉴赏、译文等字段内容,是小学生、中学生、高中生学习的好东西。朝代统计:金朝(2)、两汉(22)、明代(25)、南北朝(24)、清代(27)、宋代(348)、唐代(373)、魏晋(19)、五......
  • rails 前后端数据传递hash to json
    controller.rb@data={a:1,b:2}@data_new={"a":1,"b":2}index.htmlvararr=<%=@data%>#=>{:a=>1,:b=>2}vararr=<%=raw@data%>#=>arr={:a=>1,:b=>2}vararr=<%=raw@data_......
  • 8千多古诗词唐诗宋词鉴赏ACCESS\EXCEL数据库
    虽然已经有很多诗词类的数据库,最近又再次找了一下古诗词类的数据,又发现了一些,可是真的是各有各的优点,各有各的特色,之后不再重找诗词类的数据了。今天这个诗词鉴赏数据也不错,有分类TAG,也有译文、注释、品析、朝代,但是又有些不足,详见下面说明:朝代记录统计:金朝(15)、近代(8)、两汉(143)......
  • SpringMVC响应json数据
    SpringMvc响应json数据@Controller@RequestMapping("/json")publicclassJsonController{@RequestMapping("/js1")@ResponseBody//响应json:将return的值作为文本响应给客户端,而不是转发到对应页面publicStringjs1(){System.out.println("js......
  • Js获取当前是本年度第几周、周开始日期结束日期
    js获取今年第几周和获取周的开始和结束日期获取今年第几周周的开始和结束日期 获取今年第几周//页面初始时获取当前是本年第几周functiongetYearWeek(a,b,c){//a为年b为月c为日/*date1是当前日期date2是当年第一天......
  • vueh5实现双指操作图片或者内容放大缩小拖动 (hammerjs插件)
    可在mounted钩子直接使用通过使用Hammer.js库来实现手势操作,包括缩放、拖动和双击重置功能1.在模板中添加了一个<div>元素,并为其设置了ref属性,以便在代码中引用该元素。2.在mounted生命周期钩子函数中,通过this.$refs.main获取之前设置的<div>元素。3.创建了一个新的Hammer实例,传入......
  • js 关于 replace 取值、替换第几个匹配项
    〇、前言在日常开发中,经常遇到针对字符串的替换、截取,知识点比较碎容易混淆,特此总结一下,仅供参考。一、替换第一个匹配项字符串替换letstrtest="0123测试replace456测试replace789测试replace0"console.log("原字符串:"+strtest)letoutstr=strtest.replace("测试","c......
  • map判断是否存在某个key,以及遍历jsonobject
    if(filter.containsKey("nodeData")){JSONObjectjsonObject=(JSONObject)filter.get("nodeData");Iteratoriterator=jsonObject.keySet().iterator();while(iterator.hasNext()){Stri......
  • js 连接数据库 提示:ActiveXObject is not defined
    ActiveXObjectisnotdefined最近比较闲,上班瞎捣鼓一下,没想到报错了,提示ActiveXObjectisnotdefined大概是在js连接数据库时new对象使用的是ActiveXObject完事儿使用的浏览器是edge,但是在ie就没有问题,那么估计就是浏览器的设置问题点开edge的设置然后在默认浏览器的侧栏......
  • NPOI读取Excel数据
    usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.IO;usingNPOI.HSSF.UserModel;//用于处理Excel的NPOI库html<f:FileUploadID="fileUpload"runat="server"AllowMultiFile="false"/> C#protectedvoidUploadButton_Cl......