|
|
|
function excelToECharts(obj) { |
|
excelToData(obj); |
|
} |
|
|
|
|
|
function excelToData(obj) { |
|
|
|
let inputId = obj.id; |
|
|
|
let files = obj.files; |
|
|
|
if (files.length) { |
|
|
|
let reader = new FileReader(); |
|
let file = files[0]; |
|
|
|
let fullName = file.name; |
|
let filename = fullName.substring(0, fullName.lastIndexOf(".")); |
|
let fixName = fullName.substring(fullName.lastIndexOf("."), fullName.length); |
|
|
|
if (fixName == ".xls" || fixName == ".xlsx") { |
|
reader.onload = function (ev) { |
|
let data = ev.target.result; |
|
|
|
let excel = XLSX.read(data, {type: 'binary'}); |
|
|
|
let sheetName = excel.SheetNames[0]; |
|
|
|
let sheet = excel.Sheets[sheetName]; |
|
|
|
let sheetJson = XLSX.utils.sheet_to_json(sheet); |
|
|
|
|
|
if (inputId == 'inputLine') { |
|
|
|
getLineChartFromJson(sheetJson, filename); |
|
} |
|
} |
|
} else { |
|
alert("起开,只支持excel") |
|
} |
|
reader.readAsBinaryString(file); |
|
} |
|
} |
|
|
|
function csvToECharts(obj) { |
|
csvToData(obj); |
|
} |
|
|
|
|
|
function csvToData(obj) { |
|
|
|
let inputId = obj.id; |
|
|
|
let files = obj.files; |
|
|
|
if (files.length) { |
|
|
|
let reader = new FileReader(); |
|
let file = files[0]; |
|
|
|
let fullName = file.name; |
|
let filename = fullName.substring(0, fullName.lastIndexOf(".")); |
|
let fixName = fullName.substring(fullName.lastIndexOf("."), fullName.length); |
|
|
|
if (fixName == ".csv") { |
|
reader.onload = function (ev) { |
|
let data = ev.target.result; |
|
|
|
let excel = XLSX.read(data, {type: 'binary'}); |
|
|
|
let sheetName = excel.SheetNames[0]; |
|
|
|
let sheet = excel.Sheets[sheetName]; |
|
|
|
let sheetJson = XLSX.utils.sheet_to_json(sheet); |
|
|
|
|
|
if (inputId == 'inputLine') { |
|
|
|
getLineChartFromJson(sheetJson, filename); |
|
} |
|
} |
|
} else { |
|
alert("起开,只支持csv") |
|
} |
|
reader.readAsText(file, encoding="utf-8"); |
|
} |
|
} |
|
|
|
|
|
function getColName(sheetJson) { |
|
|
|
let keys = []; |
|
for (let key in sheetJson[0]) { |
|
keys.push(key) |
|
} |
|
return keys; |
|
} |
|
|
|
|
|
function getLineChartFromJson(sheetJson, filename) { |
|
|
|
|
|
if (sheetJson.length) { |
|
|
|
let keys = getColName(sheetJson); |
|
|
|
let xZhou = {}; |
|
xZhou.name = keys.splice(0, 1); |
|
let xDatas = []; |
|
for (let i in sheetJson) { |
|
xDatas.push(sheetJson[i][xZhou.name]); |
|
} |
|
xZhou.data = xDatas; |
|
|
|
|
|
let point = []; |
|
let list = [] |
|
for (let i in keys) { |
|
for (let idx in sheetJson) { |
|
|
|
point.push(sheetJson[idx][keys[i]]); |
|
} |
|
list.push(point) |
|
point = [] |
|
} |
|
|
|
|
|
dataToLineChart(filename, keys, xZhou.data, list); |
|
|
|
} |
|
} |
|
|
|
|
|
function choseRgb() { |
|
|
|
|
|
|
|
let r = Math.floor(Math.random() * 256); |
|
|
|
let g = Math.floor(Math.random() * 256); |
|
|
|
let b = Math.floor(Math.random() * 256); |
|
|
|
|
|
return `rgb(${r},${g},${b})`; |
|
|
|
} |
|
|
|
|
|
|
|
function dataToLineChart(title, keys, xZhou, datas) { |
|
let dic = {}; |
|
let result_list = []; |
|
for (let i in keys) { |
|
dic["name"] = keys[i]; |
|
dic["type"] = 'line'; |
|
dic["data"] = datas[i]; |
|
dic['itemStyle'] = {color: choseRgb()}; |
|
result_list.push(dic); |
|
dic = {}; |
|
} |
|
|
|
var myChart = echarts.init(document.getElementById('ECharts_main')); |
|
|
|
|
|
var option = { |
|
title: { |
|
text: title |
|
}, |
|
tooltip: { |
|
trigger: 'axis' |
|
}, |
|
legend: { |
|
type: 'scroll', |
|
|
|
padding: [20, 160], |
|
data: keys, |
|
selector: ['all', 'inverse'] |
|
}, |
|
grid: { |
|
left: '1%', |
|
right: '2%', |
|
bottom: '3%', |
|
containLabel: true |
|
}, |
|
toolbox: { |
|
feature: { |
|
dataZoom: { |
|
yAxisIndex: 'none' |
|
}, |
|
restore: {}, |
|
saveAsImage: {} |
|
} |
|
}, |
|
xAxis: { |
|
type: 'category', |
|
boundaryGap: false, |
|
data: xZhou |
|
}, |
|
yAxis: { |
|
type: 'value', |
|
scale: true, |
|
}, |
|
dataZoom: [ |
|
{ |
|
type: 'inside', |
|
start: 20000000, |
|
end: 0 |
|
}, |
|
{ |
|
start: 20000000, |
|
end: 0 |
|
} |
|
], |
|
series: result_list |
|
}; |
|
|
|
|
|
myChart.setOption(option); |
|
} |