使用的Unity版本为Unity 2020.3.34f1c2 (64-bit)
1.将图表插件XCharts导入Unity里面
2.导入ExcelPlugins
3.把XCharts原有的脚本的xy数据个数设置为0,不然会连着,显示在最前一段
4.读取Excel文件,把第一列赋给x轴,第二列赋给y轴。
Xcharts插件和ExcelPlugins及Excel文件见:https://download.csdn.net/download/weixin_44918645/86544011
代码如下:
using Excel;
using System.Data;
using System.IO;
using UnityEngine;
using XCharts.Runtime;
public class ExcelLineChart : MonoBehaviour
{
void Start()
{
//代码动态添加图表需要设置尺寸
var chart = gameObject.GetComponent<LineChart>();
if (chart == null)
{
chart = gameObject.AddComponent<LineChart>();
chart.SetSize(1580, 300);//代码动态添加图表需要设置尺寸
}
//设置标题:
var title = chart.GetOrAddChartComponent<Title>();
title.text = "光谱图";
//这里设置需要读取的文件的路径
string FilePath = Application.dataPath + "/Resources/Excel.xlsx";
//读取该文件
FileStream stream = File.Open(FilePath, FileMode.Open, FileAccess.Read);
//读取Excel文件
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();
int columns = result.Tables[0].Columns.Count;//列
int rows = result.Tables[0].Rows.Count;//行
//设置显示20个数
var xAxis = chart.GetOrAddChartComponent<XAxis>();
xAxis.splitNumber = 10;
var yAxis = chart.GetOrAddChartComponent<YAxis>();
yAxis.splitNumber = 10;
//添加数据
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
string nvalue = result.Tables[0].Rows[i][j].ToString();
//打印Excel文件中的内容
Debug.Log(nvalue);
if (j == 0)
chart.AddXAxisData(nvalue);
else
chart.AddData(0, double.Parse(nvalue));
}
}
}
}
运行效果