1. 程式人生 > 其它 >使用sheet.js匯出資料

使用sheet.js匯出資料

下面是核心程式碼

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();
});