讀取日期為new Date()格式
Tue May 18 2021 11:10:17 GMT+0800 (中國標准時間)
//非IE的xlsx文件的單元格日期原始值會少43秒或44秒
//讀取Excel數據
function getExcelData(file, callback) {
var reader = new FileReader();
var isIE = false;
var isXls = false;
//IE
if (window.ActiveXObject || "ActiveXObject" in window) {
isIE = true;
}
//xls文件
if (file.name.substr((file.name.lastIndexOf('.')) + 1) == 'xls') {
isXls = true;
}
//文件加載完成后調用
reader.onload = function (e) {
var data = e.target.result;
//type為buffer時,IE瀏覽器不兼容xls
//var workbook = XLSX.read(data, {
// type: 'buffer'
//});
//兼容IE,需把type改為binary,並對data進行轉化
var workbook = XLSX.read(arrayBufferToBinaryString(data), {
type: 'binary'
, cellDates: true //new Date()格式-->Tue May 18 2021 14:16:52 GMT+0800 (中國標准時間)
, cellText: false //不生成w
});
var sheet1 = workbook.Sheets[workbook.SheetNames[0]];
var sheet1Keys = Object.keys(sheet1);
//修正非IE的日期類型數據
for (var i = 0; i < sheet1Keys.length; i++) {
//單元格
var cell = sheet1[sheet1Keys[i]];
//類型為日期的單元格
if (cell.t && cell.t == 'd' && !isIE && !isXls) {
//非IE的xlsx文件的單元格日期原始值會少43秒,需要加上43秒
cell.v.setSeconds(cell.v.getSeconds() + 43);
}
}
//獲取json格式的Excel數據
var jsonData = XLSX.utils.sheet_to_json(sheet1, {
defval: null //單元格為空時的默認值
});
console.log(jsonData);
};
//加載文件
reader.readAsArrayBuffer(file);
}
//ArrayBuffer轉BinaryString轉BinaryString
function arrayBufferToBinaryString(data) {
var o = "",
l = 0,
w = 10240;
for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
return o;
}
讀取日期為指定格式
//讀取Excel數據
function getExcelData(file, callback) {
var reader = new FileReader();
//文件加載完成后調用
reader.onload = function (e) {
var data = e.target.result;
var workbook = XLSX.read(data, {
type: 'buffer'
, cellDates: true
, cellText: false
});
//獲取json格式的Excel數據
var jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {
defval: 'null' //單元格為空時的默認值
, raw: false
, dateNF: 'yyyy-mm-dd'
});
};
//加載文件
reader.readAsArrayBuffer(file);
}

讀取日期為原有格式(建議使用這種~)
var CellsData; //符合Cells格式的數據
//讀取Excel數據
function getExcelData(file, callback) {
var reader = new FileReader();
var isIE = false;
var isXls = false;
//IE
if (window.ActiveXObject || "ActiveXObject" in window) {
isIE = true;
}
//xls文件
if (file.name.substr((file.name.lastIndexOf('.')) + 1) == 'xls') {
isXls = true;
}
//文件加載完成后調用
reader.onload = function (e) {
var data = e.target.result;
//type為buffer時,IE瀏覽器不兼容xls
//var workbook = XLSX.read(data, {
// type: 'buffer'
//});
//兼容IE,需把type改為binary,並對data進行轉化
var workbook = XLSX.read(arrayBufferToBinaryString(data), {
type: 'binary'
, cellDates: true
, cellText: false
});
var sheet1 = workbook.Sheets[workbook.SheetNames[0]];
var sheet1Keys = Object.keys(sheet1);
var dateFormate = 'yyyy-MM-dd';
console.log(sheet1);
//修正非IE的日期類型數據
for (var i = 0; i < sheet1Keys.length; i++) {
//單元格
var cell = sheet1[sheet1Keys[i]];
//類型為日期的單元格
if (cell.t && cell.t == 'd') {
//單元格日期原始值
var date = new Date(cell.v);
if (!isIE) {
if (isXls) {
//非IE的xls文件的日期生成jsonData會多43秒,需要減去43秒
cell.v = new Date(date.getTime() - 43 * 1000);
}
else {
//非IE的xlsx文件的單元格日期原始值會少43秒,需要加上43秒
date = new Date(date.getTime() + 43 * 1000);;
}
}
console.log(date);
//單元格日期原始值含有HH:mm:ss
if (date.getHours() > 0 || date.getMinutes() > 0 || date.getSeconds() > 0) {
dateFormate = 'yyyy-MM-dd HH:mm:ss';
}
}
}
console.log(sheet1);
//獲取json格式的Excel數據
var jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {
defval: null //單元格為空時的默認值
, raw: false //使用w的值而不是v
, dateNF: dateFormate //日期格式
});
//獲取符合Cells格式的數據
CellsData = jsonDataToCells(jsonData);
console.log(jsonData);
//console.log(CellsData);
//do something
callback();
};
//加載文件
reader.readAsArrayBuffer(file);
}
//ArrayBuffer轉BinaryString轉BinaryString
function arrayBufferToBinaryString(data) {
var o = "",
l = 0,
w = 10240;
for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
return o;
}
//轉化為符合Cells格式的數據
/*
[
[], //第一行數據
[], //第二行數據
[], //第三行數據
[] //第N行數據
]
*/
function jsonDataToCells(jsonData) {
if (jsonData.length == 0) {
return [];
}
var cellsData = []; //用於存儲所有數據
var rowData = []; //用於存儲每行數據
var jsonDataKeys = Object.keys(jsonData[0]);
for (var i = 0; i < jsonData.length; i++) {
//IE不兼容
//cellsData.push(Object.values(jsonData[i]));
for (var j = 0; j < jsonDataKeys.length; j++) {
rowData.push(jsonData[i][jsonDataKeys[j]]);
}
cellsData.push(rowData);
rowData = [];
}
return cellsData;
}
//獲取Cells數據
function getCellsData(row, col) {
if ((row - 2) > (CellsData.length - 1) || row < 2 || col < 1 || (col - 1) > (CellsData[0].length - 1)) {
return { Value: undefined };
}
var cellData = CellsData[row - 2][col - 1];
return { Value: cellData == null ? undefined : cellData };
}
