Excel文件导入,导出

本文详细介绍了前端如何实现Excel文件的导入与导出,包括文件解析、使用快捷键操作文本样式,并展示了如何使用exportExcel.js生成Excel表格和创建自定义列表。此外,还涵盖了表格布局、SmartyPants、KaTeX数学公式、甘特图和UML图表的使用技巧。
摘要由CSDN通过智能技术生成

Excel文件导入,导出

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

文件导入 文件解析

     <a-upload
       action=""
       :accept="acceptTypeStr"
       :showUploadList="false"
       :beforeUpload="beforeUpload"
       class="dt-upload operate-item"
     >
       <a-button v-if="isAllowImport" class="dt-btn-import">
         导入
       </a-button>
     </a-upload>
    /**
     * 文件上传前完成解析操作,不需要进行真实上传行为
     */
    beforeUpload(file) {
      let type = file.name.split('.').pop();
      if (this.acceptType.includes(type)) {
        this.resolveFile(file);
      } else {
        this.$message.info(`导入文件只能为${this.acceptType.join(',')}类型`);
      }
      return false;
    },

    /**
     * 解析上传文件
     */
    resolveFile(file) {
      const vm = this;
      const reader = new FileReader();

      reader.onload = e => {
        // 解析数据
        const bstr = e.target.result;
        const workBook = XLSX.read(bstr, { type: 'binary' });
        // 获取第一张 sheet
        const workSheetName = workBook.SheetNames[0];
        const workSheet = workBook.Sheets[workSheetName];
        // 转换数据
        const data = XLSX.utils.sheet_to_json(workSheet, { header: 1 });
        for (let i = 1; i < data.length; i++) {
          if (_.isEmpty(data[i])) {
            continue;
          }
          const obj = {};
          // 姓名
          obj.name = data[i][0];
          // 军别
          obj.armyCategory = data[i][1];
          // 军衔
          obj.militaryRank = data[i][2];
          // 年龄
          obj.age = data[i][3];
          // 军龄
          obj.militaryAge = data[i][4];
          // 军兵种
          obj.soldierCategory = data[i][5];
          // 级别
          obj.armyLevel = data[i][6];
          // 用户名
          obj.userName = data[i][7];

          // 关联登录用户 Id
          // let userData = vm.findUserByUsername(obj.userName);
          // obj.relatedUserId = userData;
          vm.staffList.push(obj);
        }

        this.importVisible = true;
      };
      reader.readAsBinaryString(file);
    },

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

exportExcel.js

导出excel 方法


// 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
const sheet2blob = sheet => {
  let sheetName = 'sheet1';
  const workbook = {
    SheetNames: [sheetName],
    Sheets: {},
  };
  workbook.Sheets[sheetName] = sheet; // 生成excel的配置项

  const wopts = {
    bookType: 'xlsx', // 要生成的文件类型
    bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
    type: 'binary',
  };
  const wbout = XLSX.write(workbook, wopts);
  const blob = new Blob([s2ab(wbout)], {
    type: 'application/octet-stream',
  }); // 字符串转ArrayBuffer
  return blob;
};

const downloadAsExcel = (url, saveName) => {
  if (typeof url == 'object' && url instanceof Blob) {
    url = URL.createObjectURL(url); // 创建blob地址
  }
  const downloadElement = document.createElement('a');
  document.body.appendChild(downloadElement);
  downloadElement.href = url;
  downloadElement.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
  downloadElement.click(); // 点击下载
  document.body.removeChild(downloadElement); // 下载完成移除元素
  window.URL.revokeObjectURL(downloadElement.href); // 释放blob对象
};

function s2ab(s) {
  const buf = new ArrayBuffer(s.length);
  const view = new Uint8Array(buf);
  for (let i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
  return buf;
}

export { sheet2blob, downloadAsExcel };

// An highlighted block
var foo = 'bar';


 // 导出为excel表格
    async exportToExcel() {
      const header = [
        '姓名',
        '军别',
        '军衔',
        '年龄',
        '军龄',
        '军兵种',
        '级别',
        '创建时间',
      ];
      const staffData = await searchPageOfTrainingStaffByQueryParams(this);
      const newStaffData = staffData.map(staff => {
        return {
          [header[0]]: staff.name,
          [header[1]]: staff.armyCategory,
          [header[2]]: staff.militaryRank,
          [header[3]]: staff.age,
          [header[4]]: staff.militaryAge,
          [header[5]]: staff.soldierCategory,
          [header[6]]: staff.armyLevel,
          [header[7]]: staff.createTime,
        };
      });
      let sheet = XLSX.utils.json_to_sheet(newStaffData, { header }); //将一个table对象转换成一个sheet对象
      const filename = `训练人员表格${mongoid()}.xlsx`;
      downloadAsExcel(sheet2blob(sheet), filename);
    },

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值