使用Unity将Excel中的数据进行绘图表

Posted weixin_44918645

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Unity将Excel中的数据进行绘图表相关的知识,希望对你有一定的参考价值。

 使用的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));

           
       

   

运行效果

 

VSTO:在 Excel 工作表上绘图

【中文标题】VSTO:在 Excel 工作表上绘图【英文标题】:VSTO: Drawing on top of Excel worksheet 【发布时间】:2011-08-22 13:29:31 【问题描述】:

我用 C# 编写了一堆方便的 Excel 插件,一切都很好。但我无法弄清楚的一件事是是否可以在工作表控件上放置图形(位图、形状等),例如通过将函数附加到其绘制事件处理程序。

我不想以任何方式实际更改文档,它只是为了临时突出显示我的加载项如何查找和解释工作表中的数据。我想做的最简单的事情就是在特定范围内画一个边框。

我可以通过创建一堆透明的***窗口来尝试将自己剪辑到文档窗口来做到这一点,但这确实是一个令人讨厌的解决方案,而且我认为这些窗口会妨碍用户输入,也是。

【问题讨论】:

为什么不使用范围的边框或背景颜色?添加图纸听起来既复杂又脆弱。 因为我不想更改电子表格中的任何内容。我只想说明我的加载项如何选择解释工作表中的数据。一方面,编辑工作表可能会导致加载项重新考虑其解释,这意味着您将让加载项在用户执行相同操作时尝试更改工作表。如果工作表已经包含边框和背景颜色怎么办? @ReturningTarzan 你找到答案了吗? 【参考方案1】:

这是迟到的答案,但对于未来的读者,我认为值得澄清。无法使用绘图事件在 Excel 顶部绘制任何内容。但是有一种内置方法可以同时突出显示一个或多个范围 - 只需从代码中选择它即可。

【讨论】:

以上是关于使用Unity将Excel中的数据进行绘图表的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 创建绘图,同时将 excel 数据分离到新文件

VSTO:在 Excel 工作表上绘图

在绘图中有时候需要同时显示数据表格matlab在绘图中提供了啥方法可以同时显

Unity安装配置Python使用protobuf转换Excel表格数据并在unit中使用

Unity安装配置Python使用protobuf转换Excel表格数据并在unit中使用

excel绘图-杜邦分析法