Skip to content

Commit

Permalink
local:辅助函数编写
Browse files Browse the repository at this point in the history
  • Loading branch information
wangerzi committed Sep 29, 2019
1 parent eb0a119 commit a8b0733
Show file tree
Hide file tree
Showing 4 changed files with 200 additions and 5 deletions.
29 changes: 28 additions & 1 deletion demos/timeHandle/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,17 @@
<div class="layui-form-label">时间操作</div>
<div class="layui-form-block">
<button type="button" class="layui-btn layui-btn-primary" onclick="exportTimeDemo()">导出各种格式的时间</button>
<button type="button" class="layui-btn layui-btn-primary" onclick="importTimeDemo()">导入时间转换演示</button>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/html">
<div>
</div>
</script>
<script src="../../layui/layui.js"></script>
<script src="../../layui_exts/excel.js"></script>
<script>
Expand Down Expand Up @@ -90,9 +95,31 @@
date2: '第二种格式',
date3: '第三种格式'
});
console.log(data)
LAY_EXCEL.exportExcel(data, '导出各种格式的时间.xlsx', 'xlsx');
}

function importTimeDemo() {
// 假设导入拿到的数据如下(一个文件组成的数组):
var data = [{
Sheet1: [
{"A":"格式1","B":"格式2","C":"格式三"},
{"A":43729,"B":43730,"C":43737.54167824074}
]
}];
// 按照文档执行 filter 映射
data = LAY_EXCEL.filterImportData(data, {
'format_1': function (v, item, data, rowIndex, newFieldName) {
if (rowIndex > 0) {
// 首先,转换为 date 对象,然后进行格式化
var date = LAY_EXCEL.dateCodeToDate(item['A']);
return '';
} else {
return item['A'];
}
}
})
console.log(data)
}
</script>
</body>
</html>
88 changes: 86 additions & 2 deletions layui_exts/excel.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* @Version: v1.4
* @Date: 2018-03-24 09:54:17
* @Last Modified by: Jeffrey Wang
* @Last Modified time: 2019-01-15 11:49:09
* @Last Modified ~: 2019-01-15 11:49:09
*/
if (typeof layui === 'undefined' && typeof jQuery === 'undefined') {
console.error('非layui调用请先加载jQuery')
Expand Down Expand Up @@ -647,7 +647,7 @@ LAY_EXCEL = {
var option = {
header: 'A',
range: null,
fields: null,
fields: null
};
$.extend(option, opt);
var that = this;
Expand Down Expand Up @@ -715,6 +715,90 @@ LAY_EXCEL = {
};
reader.readAsBinaryString(item);
});
},
/**
* 格式化日期信息
* @param code double excel中存储的日期格式码
*/
dateCodeToDate: function(code)
{
var obj = XLSX.SSF.parse_date_code(code);
return (new Date(obj.y + '-' + obj.m + '-' + obj.d + ' ' + obj.H + ':' + obj.M + ':' + obj.S));
},
strPad: function(str, maxLength, padString) {
str = str + ''
if (typeof maxLength === 'undefined') {
maxLength = 2
}
if (typeof padString === 'undefined') {
padString = ''
}

if (str.length < maxLength) {
var repeatCount = Math.floor((maxLength - str.length) / padString.length);
var exceptStr = '';
if (repeatCount * padString.length < str.length) {
exceptStr = padString.substr(0, str.length - repeatCount * padString.length)
}
if (repeatCount * padString)
return padString * repeatCount + exceptStr + str
} else {
return str
}
},
/**
* 简易格式转换
* @param date Date 待转换时间
* @param format String 日期格式 YYYY-MM-DD HH:ii:ss
*/
dateFormat: function(date, format)
{
if (!(date instanceof Date)) {
console.error(date+'需要是时间日期对象');
}
if (typeof format === 'undefined') {
format = 'YYYY-MM-DD HH:ii:ss';
}
// 制造 format 相关参数
var YYYY = date.getFullYear();
var YY = (YYYY + '').substr(2, 2)
var M = date.getMonth();
var MM = this.strPad(M, 2, '0');
var D = date.getDay();
var DD = this.strPad(D, 2, '0');
var H = date.getHours();
var HH = this.strPad(H, 2, '0');
var i = date.getMinutes();
var ii = this.strPad(i, 2, '0');
var s = date.getSeconds();
var ss = this.strPad(s, 2, '0');

var config = {
'YYYY': YYYY,
'YY': YY,
'MM': MM,
'M': M,
'DD': DD,
'D': D,
'HH': HH,
'H': H,
'ii': ii,
'i': i,
'ss': ss,
's': s
};

for (var key in config) {
if (!config.hasOwnProperty(key)) {
continue;
}

var reg = RegExp('/'+key+'/g');

format = format.replace(reg, config[key]);
}

return format;
}
}

Expand Down
2 changes: 1 addition & 1 deletion layui_exts/excel.min.js

Large diffs are not rendered by default.

86 changes: 85 additions & 1 deletion src/excel.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* @Version: v1.4
* @Date: 2018-03-24 09:54:17
* @Last Modified by: Jeffrey Wang
* @Last Modified time: 2019-01-15 11:49:09
* @Last Modified ~: 2019-01-15 11:49:09
*/
if (typeof layui === 'undefined' && typeof jQuery === 'undefined') {
console.error('非layui调用请先加载jQuery')
Expand Down Expand Up @@ -715,6 +715,90 @@ LAY_EXCEL = {
};
reader.readAsBinaryString(item);
});
},
/**
* 格式化日期信息
* @param code double excel中存储的日期格式码
*/
dateCodeToDate: function(code)
{
var obj = XLSX.SSF.parse_date_code(code);
return (new Date(obj.y + '-' + obj.m + '-' + obj.d + ' ' + obj.H + ':' + obj.M + ':' + obj.S));
},
strPad: function(str, maxLength, padString) {
str = str + ''
if (typeof maxLength === 'undefined') {
maxLength = 2
}
if (typeof padString === 'undefined') {
padString = ''
}

if (str.length < maxLength) {
var repeatCount = Math.floor((maxLength - str.length) / padString.length);
var exceptStr = '';
if (repeatCount * padString.length < str.length) {
exceptStr = padString.substr(0, str.length - repeatCount * padString.length)
}
if (repeatCount * padString)
return padString * repeatCount + exceptStr + str
} else {
return str
}
},
/**
* 简易格式转换
* @param date Date 待转换时间
* @param format String 日期格式 YYYY-MM-DD HH:ii:ss
*/
dateFormat: function(date, format)
{
if (!(date instanceof Date)) {
console.error(date+'需要是时间日期对象');
}
if (typeof format === 'undefined') {
format = 'YYYY-MM-DD HH:ii:ss';
}
// 制造 format 相关参数
var YYYY = date.getFullYear();
var YY = (YYYY + '').substr(2, 2)
var M = date.getMonth();
var MM = this.strPad(M, 2, '0');
var D = date.getDay();
var DD = this.strPad(D, 2, '0');
var H = date.getHours();
var HH = this.strPad(H, 2, '0');
var i = date.getMinutes();
var ii = this.strPad(i, 2, '0');
var s = date.getSeconds();
var ss = this.strPad(s, 2, '0');

var config = {
'YYYY': YYYY,
'YY': YY,
'MM': MM,
'M': M,
'DD': DD,
'D': D,
'HH': HH,
'H': H,
'ii': ii,
'i': i,
'ss': ss,
's': s
};

for (var key in config) {
if (!config.hasOwnProperty(key)) {
continue;
}

var reg = RegExp('/'+key+'/g');

format = format.replace(reg, config[key]);
}

return format;
}
}

Expand Down

0 comments on commit a8b0733

Please sign in to comment.