【Unity】用Excel库读取Excel表格(.xlsx或者.xls)

这篇具有很好参考价值的文章主要介绍了【Unity】用Excel库读取Excel表格(.xlsx或者.xls)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先需要下载解析的库  EPPlus,  Excel,  ICSharpCode.SharpZipLib   

下载链接:

https://download.csdn.net/download/weixin_46472622/87238048

使用方法

我的Excel 表格是这样的,每一列有一个关键词

unity webgl 读取excel,Unity,excel,unity,游戏引擎

我用一个结构体对象来表示

public struct ExaminationQuestions
{
    public string equipmentType;//设备类型
    public string questionType;//题目类型
    public string index;//题目编号
    public string questionPattern;//题目模式
    public string questionDescription; //题目描述
    public string questionOption;//题目选项
    public string currentOption;//正确选项
    public string explain;//说明
}

读取的方法

 /// <summary>
    /// 读取Excel 表格
    /// </summary>
    /// <param name="path">表格路径</param>
    /// <returns></returns>
    public static DataSet ReadExcel(string path)
    {
        IExcelDataReader excelReader = null;
        FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
        var str = path.Split('.');
        if(str[1]=="xlsx")
        {
         excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
        }
        if(str[1]=="xls")
        {
          excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
        }
        // CreateOpenXmlReader用于读取Excel2007版本及以上的文件
        DataSet result = excelReader.AsDataSet();
        stream.Close();
        excelReader.Close();

        return result;
    }
  /// <summary>
    /// 加载表格的数据并转换为对象
    /// </summary>
    /// <param name="path">表格路径</param>
    /// <returns>返回一个结构题对象链表</returns>
    public static List<ExaminationQuestions> Load(string path)
    {
        DataSet resultds = ReadExcel(path);//调用读取的方法

        int column = resultds.Tables[0].Columns.Count;

        int row = resultds.Tables[0].Rows.Count;

        Debug.LogWarning(column + "  " + row);//行,列
        List<ExaminationQuestions> _data = new List<ExaminationQuestions>();

        for (int i =1; i < row; i++)
        {
            ExaminationQuestions temp_data;
            temp_data.equipmentType = resultds.Tables[0].Rows[i][0].ToString();
            temp_data.questionType = resultds.Tables[0].Rows[i][1].ToString();
            temp_data.index = resultds.Tables[0].Rows[i][2].ToString();
            temp_data.questionPattern = resultds.Tables[0].Rows[i][3].ToString();
            temp_data.questionDescription = resultds.Tables[0].Rows[i][4].ToString();
            temp_data.questionOption = resultds.Tables[0].Rows[i][5].ToString();
            temp_data.currentOption = resultds.Tables[0].Rows[i][6].ToString();
            temp_data.explain = resultds.Tables[0].Rows[i][7].ToString();

            Debug.Log(temp_data.equipmentType + "  " + temp_data.questionType+ "  "+ temp_data.index + "  " + temp_data.questionPattern + "  " + temp_data.questionDescription + "  " + temp_data.questionOption + "  " + temp_data.currentOption + "  " + temp_data.explain);

            _data.Add(temp_data);

        }
        return _data;
    }
}

 全部代码,以及调用:

using Excel;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using UnityEngine;

public class XLSXConvert 
{
    void Start()
    {
       // 这里设置需要读取的文件的路径
         string FilePath = Application.streamingAssetsPath + "/ExaminationQuestions.xlsx";
        Load(FilePath);
    }

    /// <summary>
    /// 读取Excel 表格
    /// </summary>
    /// <param name="path">表格路径</param>
    /// <returns></returns>
    public static DataSet ReadExcel(string path)
    {
        IExcelDataReader excelReader = null;
        FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
        var str = path.Split('.');
        if(str[1]=="xlsx")
        {
         excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
        }
        if(str[1]=="xls")
        {
          excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
        }
        // CreateOpenXmlReader用于读取Excel2007版本及以上的文件
        DataSet result = excelReader.AsDataSet();
        stream.Close();
        excelReader.Close();

        return result;
    }
    /// <summary>
    /// 加载表格的数据并转换为对象
    /// </summary>
    /// <param name="path">表格路径</param>
    /// <returns>返回一个结构题对象链表</returns>
    public static List<ExaminationQuestions> Load(string path)
    {
        DataSet resultds = ReadExcel(path);//调用读取的方法

        int column = resultds.Tables[0].Columns.Count;

        int row = resultds.Tables[0].Rows.Count;

        Debug.LogWarning(column + "  " + row);//行,列
        List<ExaminationQuestions> _data = new List<ExaminationQuestions>();

        for (int i =1; i < row; i++)
        {
            ExaminationQuestions temp_data;
            temp_data.equipmentType = resultds.Tables[0].Rows[i][0].ToString();
            temp_data.questionType = resultds.Tables[0].Rows[i][1].ToString();
            temp_data.index = resultds.Tables[0].Rows[i][2].ToString();
            temp_data.questionPattern = resultds.Tables[0].Rows[i][3].ToString();
            temp_data.questionDescription = resultds.Tables[0].Rows[i][4].ToString();
            temp_data.questionOption = resultds.Tables[0].Rows[i][5].ToString();
            temp_data.currentOption = resultds.Tables[0].Rows[i][6].ToString();
            temp_data.explain = resultds.Tables[0].Rows[i][7].ToString();

            Debug.Log(temp_data.equipmentType + "  " + temp_data.questionType+ "  "+ temp_data.index + "  " + temp_data.questionPattern + "  " + temp_data.questionDescription + "  " + temp_data.questionOption + "  " + temp_data.currentOption + "  " + temp_data.explain);

            _data.Add(temp_data);

        }
        return _data;
    }
}
public struct ExaminationQuestions
{
    public string equipmentType;//设备类型
    public string questionType;//题目类型
    public string index;//题目编号
    public string questionPattern;//题目模式
    public string questionDescription; //题目描述
    public string questionOption;//题目选项
    public string currentOption;//正确选项
    public string explain;//说明
}

如果是打包PC端的exe,需要将编辑器下的I18N导入工程,打包就可以成功解析了。

(打包方式为mono的可以,为IL2Cpp的不行)2019.4.25f1c1\Editor\Data\MonoBleedingEdge\lib\mono\unity

unity webgl 读取excel,Unity,excel,unity,游戏引擎

 这样就可以成功解析,如果是IL2cpp要解析Excel表格,可以参考这篇

[Unity]FlexReader插件读取excel解决IL2Cpp与I18N打包冲突的问题_DAGUNIANGZHOU的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-520888.html

到了这里,关于【Unity】用Excel库读取Excel表格(.xlsx或者.xls)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用python将csv转excel (.xls和.xlsx)的几种方式

    excel 后缀有2种格式, .xls 是从 Excel 97 到 Excel 2003 的默认文件格式,而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。 .xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。 .xlsx格式最多支持1048576行,16384列。 此外就是,存储同样多的数据,.xlsx格式文件更

    2024年02月05日
    浏览(54)
  • Unity 使用NPOI,模板替换Excel中的关键字(针对.xlsx)

    Unity 使用NPOI,模板替换Excel中的(针对.xlsx) 需求:项目中要用到生成Excel来打印文件,只需要替换其中的值,保留原模板,生成新的Excel 第一步:在unity中导入一下的dll 新建一个Plugin的文件夹,把dll全部放进去 以上选中的这些文件在unity的安装目录下 UnityEditorData

    2023年04月24日
    浏览(49)
  • VBA:Application.GetOpenFilename打开指定文件夹里的excel类型文件(xls、xlsx)

    \\\'GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。 \\\'Application.GetOpenFilename(“文件类型筛选规则(就是说明)”,“优先显示第几个类型的文件”,“标题”,“是否允许选择多个文件名”) 打开类型只限excel文件 \\\'“文件类型

    2024年02月11日
    浏览(49)
  • Java Excel转PDF,支持xlsx和xls两种格式, itextpdf【即取即用】

    本篇主要为工具方法整理,参考学习其他博主文章做了整理,方便使用。 1、本地转换 导入依赖 创建工具方法 传入输入输出流或文档地址即可。 2、网络下载 通过POI或者easyExcel生成或填充,再由后端转换PDF响应前端 思路 :将网络下载拆分为本地转换,再响应前端即可。 现

    2024年02月04日
    浏览(45)
  • Excel表格和Unity

    下载EPPlus.dll 链接:https://pan.baidu.com/s/1l0FYTf8nATrPdEt6fXJ6Kg?pwd=1111 提取码:1111 将dll文件拖拽到 Assets/Plugins Assets 下新建文件夹 Editor ,右键Editor点击 Show in Explorer ,新建 Excel 表格文件(后缀.xlsx),表格文件放在Assete/Editor中。 引入命名空间 :using OfficeOpenXml ; using System.IO; Exce

    2024年02月08日
    浏览(34)
  • Unity实现读取Excel文件

    我们都知道Unity有自带的类textAsset可以简单地读取Text文本的内容。但在实际的开发过程中,我们不可避免地会与excel 或者 json这些文件类型打交道,今天也是花了点时间,整理出来了如何简单地实现读取excel文档的功能。 github地址:github项目地址 本人个人博客:wyryyds.github.

    2024年02月11日
    浏览(84)
  • Android 读取excel(支持 xls)和 xml

    一、使用jxl 读取excel文件 1.build.gradle的dependencies中加入  2.将xls文件复制到assets文件夹 3.读取文件内容: 二、使用XmlPullParser读取xml文件 1.将xml文件复制到assets文件夹 2.读取文件内容: 完整的FileUtil工具类:

    2024年02月13日
    浏览(39)
  • UNITY--读取Excel的几种方式

    目录 一.DLL插件读取 1.1.Excel存放位置 1.2.使用示例 1.3.Excel格式  1.4.输出显示  1.5.所需插件 二.Excel转成Asset文件,再进行读取 2.1Excel文件存放位置 2.2 编辑模式生成Asset文件,并保存到指定位置  2.3创建ExcelRead脚本,读取Excel内容 2.4 创建数据存储脚本 2.5  编辑器生成Asset 与属

    2024年01月20日
    浏览(55)
  • vue中使用xlsx读取excel文件

    在项目的node_modules文件夹和package.json文件中可以找到xlsx依赖 这里使用的h5原生文件上传项 其中 multiple 属性允许上传多个文件 其中,可以发现fileList是一个类数组,由传入的file对象组成。每个file对象包含一下属性: 属性 属性值 描述 lastModified Number 表示最近一次的修改时间

    2024年02月02日
    浏览(48)
  • 前端使用xlsx插件读取excel文件数据

    使用 xlsx 插件在前端读取Excel文件数据具有以下优点和缺点,适用于以下场景: 简单易用: xlsx 插件提供了简单的API来读取Excel文件数据,无需复杂的配置和依赖。 完整的功能: xlsx 插件支持读取各种Excel文件格式,包括XLS和XLSX等常见格式,可以读取多个工作表和多种数据类

    2024年02月14日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包