把表格导出为excel或者csv

ISCC-Amy‘s Code CTF-Reverse ISCC-Amy's Code CTF-Reverse 阅读详情

话不多说直入正题 先安装2个依赖

npm install -S file-saver xlsx
npm install -D script-loader

然后引入一个js文件用于生成excel

/* eslint-disable */
// require('script-loader!file-saver');
// // require('script-loader!./Blob');
// const {blob} = require('./Blob')
// require('script-loader!xlsx/dist/xlsx.core.min');
require('script-loader!file-saver');
require('./Blob.js'); //改成相对路径
require('script-loader!xlsx/dist/xlsx.core.min');
function generateArray(table) {
  var out = [];
  var rows = table.querySelectorAll('tr');
  var ranges = [];
  for (var R = 0; R < rows.length; ++R) {
    var outRow = [];
    var row = rows[R];
    var columns = row.querySelectorAll('td');
    for (var C = 0; C < columns.length; ++C) {
      var cell = columns[C];
      var colspan = cell.getAttribute('colspan');
      var rowspan = cell.getAttribute('rowspan');
      var cellValue = cell.innerText;
      if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;

      //Skip ranges
      ranges.forEach(function (range) {
        if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
          for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
        }
      });

      //Handle Row Span
      if (rowspan || colspan) {
        rowspan = rowspan || 1;
        colspan = colspan || 1;
        ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
      }
      ;

      //Handle Value
      outRow.push(cellValue !== "" ? cellValue : null);

      //Handle Colspan
      if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
    }
    out.push(outRow);
  }
  return [out, ranges];
};

function datenum(v, date1904) {
  if (date1904) v += 1462;
  var epoch = Date.parse(v);
  return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
}

function sheet_from_array_of_arrays(data, opts) {
  var ws = {};
  var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
  for (var R = 0; R != data.length; ++R) {
    for (var C = 0; C != data[R].length; ++C) {
      if (range.s.r > R) range.s.r = R;
      if (range.s.c > C) range.s.c = C;
      if (range.e.r < R) range.e.r = R;
      if (range.e.c < C) range.e.c = C;
      var cell = {v: data[R][C]};
      if (cell.v == null) continue;
      var cell_ref = XLSX.utils.encode_cell({c: C, r: R});

      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[14];
        cell.v = datenum(cell.v);
      }
      else cell.t = 's';

      ws[cell_ref] = cell;
    }
  }
  if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
  return ws;
}

function Workbook() {
  if (!(this instanceof Workbook)) return new Workbook();
  this.SheetNames = [];
  this.Sheets = {};
}

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

export function export_table_to_excel(id) {
  var theTable = document.getElementById(id);
  console.log('a')
  var oo = generateArray(theTable);
  var ranges = oo[1];

  /* original data */
  var data = oo[0];
  var ws_name = "SheetJS";
  console.log(data);

  var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);

  /* add ranges to worksheet */
  // ws['!cols'] = ['apple', 'banan'];
  ws['!merges'] = ranges;

  /* add worksheet to workbook */
  wb.SheetNames.push(ws_name);
  wb.Sheets[ws_name] = ws;

  var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});

  saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
}

function formatJson(jsonData) {
  console.log(jsonData)
}
export function export_json_to_excel(th, jsonData, defaultTitle) {

  /* original data */

  var data = jsonData;
  data.unshift(th);
  var ws_name = "SheetJS";

  var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);


  /* add worksheet to workbook */
  wb.SheetNames.push(ws_name);
  wb.Sheets[ws_name] = ws;

  var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
  var title = defaultTitle || '列表'
  saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
}

最后在导出的方法中写入

  require.ensure([], () => {
        const excelData = this.tableDatasRes;
        const headerArr = excelData.FieldDesc.filter(val => val.Visible === 1)
        // 表格第一行的标题
        const headerNameArr = []
        headerArr.forEach(val => {
          headerNameArr.push(val.DisplayName)
        })
        // 表格数据一一对应
        const dataArr = []
        excelData.Data.forEach(item => {
          const inner = []
          headerArr.forEach(val => {
            inner.push(item[val.FieldName])
          })
          dataArr.push(inner)
        })
        // excel名称可自定义
        const a = this.importMethodList.filter(val => val.TableName === this.importMethodVal);
        const excelName = a[0].TableDesc;
        export_json_to_excel(headerNameArr, dataArr, excelName)
      })

这个方法做的是 处理好表头和内容的数据,需要一一对应。


完结,撒花。

2021/11/18更新导出csv

  let csvContent = "data:text/csv;charset=utf-8,\uFEFF" + res;
          const link = document.createElement("a");
          link.href = encodeURI(csvContent);
          link.download = '数据基础表.csv';
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link)
          window.URL.revokeObjectURL(csvContent);

res为后端返回的数据。中文乱码用如上方法可不乱。。

全球建筑物提取数据集(免费下载):微软/GlobalMLBuildingFootprints 这个是GitHub上的开源数据集: https://github.com/microsoft/GlobalMLBuildingFootprints 介绍 必应地图正在世界各地发布开放式建筑足迹。我们从 2014 年到 2021 年间的 Bing Maps 图像中检测到了 7.77 亿座建筑物,包括 Maxar 和 Airbus 的图像。数据可在 ODbL 下免费下载和使用。该数据集补充了我们的其他版本。 包括的地区 执照 此数据由 Microsoft 根据Open Dat.. 阅读详情

相关推荐

华为Atlas200DK实战指南:从零搭建AI开发环境到人像语义分割模型部署

本文提供了一份详尽的华为Atlas 200DK AI开发环境搭建与模型部署实战指南。文章采用合设环境方案,从SD卡准备、系统镜像烧录、网络配置到必备工具安装,逐步引导开发者完成环境搭建。核心部分详细讲解了如何利用华为ATC工具将TensorFlow模型转换为昇腾专用格式,并最终成功编译和运行人像语义分割模型,实现实时人像识别效果。

weixin_29309213的博客 356

Javascript实现把网页中table的内容导入到excel中的几种方法__摘录

[b][size=x-large][url=http://zgqhyh.iteye.com/blog/469033]分享程序员赚钱方法[/url][/size][/b] Javascript实现把网页中table的内容导入到excel中的几种方法 一、 直接拷贝整个表格到EXCEL中 二、 ...

天天成长的博客 533

thinkcmf 代码执行 (CVE-2019-7580) 漏洞复现

所有文章,仅供安全研究与学习之用,后果自负! thinkcmf 代码执行 CVE-2019-7580thinkcmf 代码执行 (CVE-2019-7580)0x01 漏洞描述0x02 影响范围0x03 漏洞复现3.1 登录后台3.2 漏洞利用3.2.1webshell3.2 phpinfo3.3 获取系统命令0x04 漏洞修复 thinkcmf 代码执行 (CVE-2019-7580) 复现小心会搞崩环境。 0x01 漏洞描述 ThinkCMF是一款支持Swoole的开源内容管理框架(CMF),基于Thi

YouthBelief的博客 4263

JS - 导出table表格为Excel、CSV

导出table表格为Excel、CSV

技术共享,共同进步! 1652

渗透测试之哥斯拉实战

可以直接在这里使用meterpreter命令进行对服务端的控制。选择目标 - 添加,配置连接信息,之后测试连接成功!php的shell功能如图。先要进行数据库的配置信息。可以直接在这里打包全站。

大河之犬的博客 2488

【数字IC刷题】华为海思数字IC笔试题(3)详细解析版

【数字IC刷题】华为海思数字IC笔试题(3)详细解析版

MoorePlus的博客 2370

Vue2.x + element ui 导入导出excel

实现内容: 导入excel文件最终将其展现在页面table中 将页面table中的表格转换为excel文件 仓库地址: 完整代码在这里:https://github.com/Nigo-yyy/vue-excel 依赖安装: 需要安装三个依赖包, 和两个JS包 npm包: 分别安装 file-saver、 xlsx、 script-loader三个依赖 npm install -S file-saver xlsx(这里其实安装了2个依赖) npm install -D script-loader JS文件

- 1914

华为 MetaERP 财务模块的核心业务对象,按子模块与架构维度分类,以表格呈现,适配架构设计与实施落地

华为MetaERP财务模块基于4A架构(业务/应用/数据/技术)与TOGAF框架,实现业财一体化与全球合规。业务架构涵盖组织模型与核心流程,应用架构支撑财务操作,数据架构确保数据一致性,技术架构提供高性能技术底座。模块覆盖总账、应收应付、资产等子模块,支持多组织、多币种、多准则核算,通过实时会计引擎实现"交易即核算"。4A架构与TOGAF框架对应,实现业务能力、应用组件、数据模型与技术栈的深度融合,为华为全球化财务核算提供核心支撑。

金牌架构师 437

vue中电子表格的导入导出

一、安装 npm install -S file-saver xlsx npm install -D script-loader 二、在src下新建vender文件夹,装Blob.js和 Export2Excel.js这两个文件 然后在index.js中导入 import Blob from './../../vender/Blob.js' import Export2Excel f...

WeiflR10的博客 832

告别调参难!YOLO超参数优化指南(网格搜索+贝叶斯优化实战)

YOLO超参数优化的本质,不是“试遍所有参数”,而是“用工具化方法,在场景约束内找到最优平衡”——网格搜索稳、贝叶斯优化快,两者结合(先粗搜再精调)是工业场景的最优解。先定范围:基于工业场景(小目标/边缘设备/多类别)缩小参数搜索范围,避免无效探索。先调核心:优先优化数据增强、学习率、输入尺寸,这些参数对精度影响最大。工具赋能:用网格搜索+贝叶斯优化替代人工试错,再用TensorBoard监控,让调参“有据可依”。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 698

【SpringBoot笔记44】SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置)

在SpringBoot应用开发中,一般情况下,都是只会配置一个数据源信息,之后整个工程都是对当前数据源进行增删改查的操作。但是,在实际开发里面,也有可能会遇到多数据源的情况,例如:当前工程中除了需要访问自己应用的数据库,还需要直接连接第三方系统的数据库进行业务处理,这种情况下,就需要进行多数据源的配置。SpringBoot考虑到了这一点,所以它是支持多数据源的配置的,下面介绍一下如何配置多数据源。

✅ Java 开发工程师 1116

表格选择列显示、拖拽排序、导出excel

1、需要提前按照拖动组件 // 导出功能 import { export_array_to_excel2 } from '@/utils/tableToExcel' export default { methods: { // 公共的导出方法 //第一个参数:所有的表头字段 //第二参数:选择展示的表头字段 //第三参数:表格数据 //第四个参数...

xx_ll_的博客 1353

AutoSAR配置与实践(实践篇)11.1 如何通过IPDU分组控制报文收发

注意这个新增的action其实是一个用户回调函数,在函数中进行配置字的判断,即可完成用户条件的判断(TRUE/FALSE),注意用户条件是用户封装的函数,用于输入给后续的逻辑判断和rule。进行PDU的拆分后,根据配置字可以选择PDU是否使能了。PDU组拆分后可分为常规PDU组和可配PDU组(新增),诊断一方面按原有逻辑控制常规PDU组,另一方面控制新的可配PDU组。举例说明,诊断场景:使能,配置字满足,则用户条件为TURE,表示期望使能可配PDU组(诊断禁止服务场景类似方式,在此不再列举)。

nihaoljq2010的博客 833

前端下载excel表格文件——flie-saver导出类型为csv或者xlsx

前端导出利用file-saver导出excel表格

mzy110_的博客 2208

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Flex/Air将DataGrid数据导出为CSV/Excel格式

综合网上对这个问题的讨论,大致有两种思路。一种是:将DataGrid数据经过封装变为html格式,输出到系统剪切板中,通过调用JavaScript将数据写入Excel中,调用浏览器打开,浏览之后,保存。第二种:是将DataGrid数据转换为为CSV(逗号分隔值文件)文件,用Excel打开。同时搜素到一片文章,http://coenraets.org/blog/2009/11/open-in-exc

俊哥 1847

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

lisp倒入excel数据画图_如何将EXCEL中的数据导入到CAD中,绘制成曲线|

如何将EXCEL中的数据导入到CAD中,绘制成曲线如果不用软件,只用CAD自身功能的话可以通过多段线生成你需要的曲线。你给出你的曲线函数,我给你生成曲线坐标以及CAD能自动绘制的文件格式怎样将cad中的表格导入excel不用插件就可,不过就烦点:先选择要导出的表格(注意不是选择表格的单元格),右键(最好在出现的夹点上或是灰色阴影的左顶上角右键,免得变成:选择单元格-右键),选择“输出”,默认保存为...

weixin_42314860的博客 2203

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

php表格显示按钮,PHP如何将查询出来的数据导出成excel表格(最好做一个按钮)《》...

php 导出excel 表格内换行问题!!!!\r\n 和 chr(10) . chr(13) 都是可以的,看起来只增加了一个空格的占位符,这是因为没有设置单元格的自动换行属性,也就是说不允许单元格内容换行,所以换行字符显示为空格。PHP如何将查询出来的数据导出成excel表格(最好做一个按钮)讲的复杂!你先在一个完整版的PHPExcel之后解压,在“Examples”目录下到一大堆例子,根据你...

weixin_36462640的博客 352

JS 导出table数据到Excel

前4种方法只支持IE,最后一个支持主流浏览器 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head lang="en"&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;html 表格导出&lt;/title&gt; &lt;script la

monster的博客 443

java页面导出excel,csv文件

//platform 为前端传入的,用于判断不同操作系统下的换行符 protected String getNewLine(String platform) { if (StringUtils.equals(platform, "MacIntel")) { return "\n"; } else if (StringUtils.equals(platfor...

langqingj的博客 877

将echarts图表数据导出成表格

这次开发,产品让实现echarts图表上加个导出按钮,需要导出成excel表格。如图所示: 开始一点思路都没有,百度了之后找到一个我个人觉得很不错的方法。上代码: 首先肯定是写按钮,给按钮加点击导出事件 <a-button size="small" @click="tableToExcel">导出表格</a-button> methods:{ tableToExcel() { // 用,隔开,一个逗号就是一个单元格 let str = '时间,商品名称,商品ID,

weixin_52102446的博客 7085

原生php导出csv格式的Excel文件

效果图 源码分析 index.php &lt;?php require_once "./Export.php"; //测试数据 $headerList= ['列名1','列名2','列名3']; $data = [ ['值1','值2','值3'], ['值11','值22','值33'], ['值111','值222','值333'] ]; $fileNam...

Jason World 1205

【EasyExcel&Hutool】excel表格的导入和导出,csv文件的导入导出

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。

weixin_44823875的博客 1万+

qt导出为excel表格,csv表格,word表格,pdf表格格式

导出excel、word、pdf数据为表格形式

qq_52218412的博客 3933

vue + element + 导入、导出excel表格

相关文档: https://blog.youkuaiyun.com/qq_37141546/article/details/78852198 导入、导出:https://www.cnblogs.com/liguiwang/p/8430672.html   导入表格: &lt;input type="file" @change="importf(this)" accept=".csv, applica...

羽下佳人的博客 11万+

layui表格导出:Excel/CSV数据导出方案

在日常Web开发中,表格数据导出是极其常见的业务需求。无论是后台管理系统中的数据报表导出,还是前端页面中的用户数据下载,都需要一个简单高效的导出方案。layui作为一款优秀的前端UI框架,提供了内置的表格导出功能,但很多开发者对其使用方式和高级定制并不熟悉。 通过本文,你将掌握: - ✅ layui表格基础导出功能的使用 - ✅ CSV和Excel格式的导出配置 - ✅ 自定义数据导出的高级技巧...

gitblog_00120的博客 1236

前端导出csv/excel文件的几种方式

前言 经常做后管项目,里面必然会遇到的就是导出(下载)各种列表,一般就是excel或者csv格式的,有时候也会要求pdf格式,因为今天改了一个关于导出文件乱码的bug,就顺便小结一下。 一、Excel和CSV格式文件 在开始说导出(下载)方式之前,先来提一下Excel和csv格式是什么,有什么区别?直接下载Excel不就行了。可以仔细看一下下表,也可直接跳过看主要内容; Exce CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Va

一个女胖子的博客 8986
上一篇: h5拖拽和vue拖拽
下一篇: Ant Design Vue可能遇到的问题(持续更新)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值