1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /** 图表转换为图片 */
- function convertChart(luckyData) {
- const optionData = luckysheet.getLuckysheetfile()[0]
- let {
- visibledatacolumn, // 所有行的位置
- visibledatarow // 所有列的位置
- } = optionData
- // 动态图表
- if (luckyData.charts && luckyData.charts.length > 0) {
- luckyData.charts.forEach((chart, i) => {
- let myChart = echarts.init(
- document.getElementsByClassName(chart.info.className)[0]
- )
- let baseData = myChart.getConnectedDataURL({
- type: 'png',
- pixelRatio: 2,
- backgroundColor: '#ffffff'
- })
- // luckysheet.cancelRangeMerge(chart.info.pos)
- luckysheet.insertImage(baseData, {
- rowIndex: chart.info.pos[0],
- colIndex: chart.info.pos[1],
- cellSize: this.getCellSize(optionData, chart.info.pos[0], chart.info.pos[1],
- luckysheet),
- success: function() {
- console.log("插入成功")
- }
- })
- })
- }
- // 静态图表
- if (luckyData.data && luckyData.data.length > 0) {
- luckyData.data.forEach((data, i) => {
- if (data.chart && data.chart.length > 0) {
- data.chart.forEach((chart, j) => {
- let myChart = echarts.init(
- document.getElementById(chart.chart_id)
- )
- myChart.setOption(chart.chartOptions);
- let baseData = myChart.getConnectedDataURL({
- type: 'png',
- pixelRatio: 2,
- backgroundColor: '#ffffff'
- })
- let col_st = getImagePosition(chart.left, visibledatacolumn)
- let row_st = getImagePosition(chart.top, visibledatarow)
- luckysheet.insertImage(baseData, {
- rowIndex: parseInt(row_st),
- colIndex: parseInt(col_st),
- cellSize: {
- w: chart.width,
- h: chart.height,
- },
- success: function() {
- console.log("插入成功")
- }
- })
- })
- }
- })
- }
- }
- /** 获取图片位置 */
- function getImagePosition(num, arr) {
- let index = 0
- let minIndex
- let maxIndex
- for (let i = 0; i < arr.length; i++) {
- if (num < arr[i]) {
- index = i
- break
- }
- }
- if (index == 0) {
- minIndex = 0
- maxIndex = 1
- } else if (index == arr.length - 1) {
- minIndex = arr.length - 2
- maxIndex = arr.length - 1
- } else {
- minIndex = index - 1
- maxIndex = index
- }
- let min = arr[minIndex]
- let max = arr[maxIndex]
- let radio = Math.abs((num - min) / (max - min)) + index
- return radio
- }
|