首页 > 其他分享 >使用sheet.js导出数据

使用sheet.js导出数据

时间:2022-12-07 09:45:05浏览次数:45  
标签:function jsonobj sheet 导出 js length let null

下面是核心代码

let exportColData
let exportColHead
//excel工作簿全局变量
let workBook = null;
//excel sheet全局变量
let workSheet = null;
let exportData = []
let exportCount = 5000
let letterList = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
let totalCount=null

function getExportData(pageIndex, pageSize) {
new Promise(function (resolve,reject) {
var jsonobj = $('.row[data-key="@Key"]').getFormData();
jsonobj["SMT_TOOL_CODE"] = jsonobj["TOOLING_CODE"];
jsonobj["DATETIME_MODIFIED_BEGIN"] = $('#txt_datetime_begin_@Key').val();
jsonobj["DATETIME_MODIFIED_END"] = $('#txt_datetime_end_@Key').val();
jsonobj["WorkShopID"] = $('#workshop_WORKSHOP_ID').val();
jsonobj["ProcessId"] = $('#[email protected]').val();
jsonobj["SHIFT_CODE"] = $('#ShiftCode_@Key').find("option:selected").val();

var json_str = JSON.stringify(jsonobj);
var start = (pageIndex - 1) * pageSize
if (totalCount =null||totalCount >= start) {
$.ajax({
url: '/RPT/@controller/LoadData?start=' + start + '&length=' + pageSize,
type: 'post',
timeout: 60000,
cache: false,
data: { postjson: json_str },
success: function (respData) {
totalCount=respData.recordsTotal
if (respData.data.length > 0) {
exportData.push(...respData.data)
}
let pre = Math.trunc( (exportData.length / respData.recordsTotal) * 100)
updateProgress(pre)
pageIndex++
//获取数据
getExportData(pageIndex, pageSize)

respData = null
},
error: function (err) {
alert(err)
}
})
}
else
resolve()
}).then(function () {
if (exportData.length > 0) {
workSheet = XLSX.utils.json_to_sheet(exportData, { header: exportColHead, dense: true })
//设置标头
for (let i = 0; i < exportColData.length; i++) {
workSheet["!data"][0][i].v = exportColData[i].Tit
}
var len = "A1:" + letterList[exportColData.length - 1] + exportData.length+1
//导出范围内的数据
workSheet['!ref'] = len
XLSX.utils.book_append_sheet(workBook, workSheet, "Sheet0")

let fileName = '部装缺陷记录报表_' + formatDate(new Date(), 'yyyyMMddhhmmss')+'.xlsx'
XLSX.writeFile(workBook, fileName, { dense: true, compression: true, type: 'binary' })
}
exportInit()
}).catch(function (ex) {
console.log(ex)
exportInit()
})
}

function updateProgress(pre) {
$("#exportProgress").text('导出进度:' + pre + '%')
}


function exportInit() {
workBook = null
workSheet = null
exportColData = null
exportColHead = null
totalCount = null
exportData=[]
$("#ExportDiv").prop('disabled', '')
$("#exportProgress").text('1%')
$("#myModal").modal('hide')

}

function exportAction() {
exportColData = sys_columns
//定义表头
let colHeader = []
for (let ii = 0; ii < sys_columns.length; ii++) {
colHeader.push(sys_columns[ii].Data)
}
exportColHead = colHeader
workBook = XLSX.utils.book_new();
//console.log(colHeader)
//根据头部数组创建excel sheet
//workSheet = XLSX.utils.aoa_to_sheet({ header: colHeader });

var pageIndex = 1
var pageSize = exportCount
getExportData(pageIndex, pageSize)

}


//导出Excel
$("#ExportDiv").click(function () {
$("#ExportDiv").prop('disabled', 'disabled')
$("#myModal").modal('show')
exportAction();
});

标签:function,jsonobj,sheet,导出,js,length,let,null
From: https://www.cnblogs.com/JacobNetLife/p/16962183.html

相关文章

  • js 语言基础
    基础概念:任何语言的核心最基础层面一定包括:语法、操作符、数据类型、以及内置功能大小写ECMAScript中的一切都是区分大小写的,无论是变量操作符还是函数名标识符......
  • Application entry file "electron\background.js" does not exist
    背景用Vue3+Electron开发了个PDF自由合并客户端。客户端侧代码慢慢膨胀,于是想将默认的路径src/background.js调整到electron/background.js。于是修改了:vue.c......
  • 前端开发JS之BOM、DOM操作、事件、jQuery类库
    BOM操作DOM操作查找标签操作节点class与css操作事件事件实战案例jQuery类库标签对象与jQuery对象BOM操作全称:BrowserObjectModel指浏览......
  • EndNote设置导出参考文献格式为中文国标GBT7714
    笔者使用的版本是最新的EndNote20,其他版本大同小异。依次打开:Tools->OutputStyles->OpenStyleManager。其他版本可能有差异,只要找到OpenStyleManager即可。在......
  • 【requirejs】requirejs使用layui,layui样式无法正常加载
    【requirejs】requirejs使用layui,layui样式无法正常加载 requirejs里使用layui,会有3个css文件无法正常加载错误提示GET http://127.0.0.1:8080/css/modules/lay......
  • 前端JS
    窗口相关操作//以下代码均为省掉window前缀的尽量写全(见名知意)open()//打开新的空白网页(可跟网址)open('网址','','宽,高')//打开新的子页面......
  • 前端之js之BOM操作-DOM操作-jQuery类库
    目录前端之js之BOM操作-DOM操作-jQuery类库今日内容概要今日内容详细BOM操作DOM操作查找标签操作节点获取值操作class与css操作事件事件实战案例jQuery类库标签对象与jQuer......
  • day33-JSON&Ajax01
    JSON&Ajax01JSON在线文档AJAX在线文档1.JSON介绍JSON指的是JavaScript对象表示法(JavaScriptObjectNotation),JSON的本质仍然是JavaScript对象JSON是轻量......
  • JS中BOM与DOM操作
    BOM操作window对象是与浏览器窗口做交互的语言BOM=BrowserObjectModel是指浏览器对象模型,它可以使Javascript有能力和浏览器进行对话window.open()//打开一个......
  • jstat 命令
    一、概述jstat(JVMStatisticsMonitoringTool)是用于监视虚拟机各种运行状态信息的命令行工具jstat命令格式jstat [option pid [interval] [count] ]//......