您的位置:首页 > 健康 > 美食 > 天津建设工程信息网官网查询_园林景观设计公司经营范围_seo关键词排名工具_小红书推广渠道

天津建设工程信息网官网查询_园林景观设计公司经营范围_seo关键词排名工具_小红书推广渠道

2024/12/22 20:12:28 来源:https://blog.csdn.net/weixin_45136016/article/details/143786628  浏览:    关键词:天津建设工程信息网官网查询_园林景观设计公司经营范围_seo关键词排名工具_小红书推广渠道
天津建设工程信息网官网查询_园林景观设计公司经营范围_seo关键词排名工具_小红书推广渠道

文章目录

  • 1.下载NuGet包
  • 2.通过NuGet包获取dll
  • 3.将dll复制unity Plugins文件夹下
  • 4.代码获取Excel表内容

1.下载NuGet包

通过NuGet下载:

  • ExcelDataReader
  • ExcelDataReader.DataSet
  • 离线下载方法

2.通过NuGet包获取dll

根据编译时程序集找到dll位置,找到与unity3d的.net版本匹配的dll
在这里插入图片描述

3.将dll复制unity Plugins文件夹下

请添加图片描述

4.代码获取Excel表内容

这里给个异步读取Excel表的ExcelHelp类:

/** FileName:    ReadExcelTest* Author:      ming* CreateTime:  2024/11/15 10:52:36* Description: 读取Excel数据(程序运行期间只读取一次)*
*/using ExcelDataReader;
using System.Data;
using System.IO;
using System.Threading.Tasks;
using System;public class ExcelHelper
{private string _filePath;private DataSet _cacheDataSet;  // 缓存读取的DataSetprivate readonly object _lock = new object();   // 线程锁public ExcelHelper(string filePath){_filePath = filePath;}// 异步读取Excel数据public async Task<DataSet> ReadExcelAsync(){if (_cacheDataSet != null)return _cacheDataSet;return await Task.Run<DataSet>(() =>{lock (_lock){if (_cacheDataSet == null)  // 双重检查锁定{using (var stream = File.Open(_filePath, FileMode.Open, FileAccess.Read)){using (var reader = ExcelReaderFactory.CreateReader(stream)){_cacheDataSet = reader.AsDataSet();}}}}return _cacheDataSet;});}// 根据 sheet 名获取 DataTablepublic async Task<DataTable> GetSheetByNameAsync(string sheetName){await ReadExcelAsync();return _cacheDataSet.Tables[sheetName];}// 根据 sheet 索引获取 DataTablepublic async Task<DataTable> GetSheetByIndexAsync(int sheetIndex){await ReadExcelAsync();if (sheetIndex >= 0 && sheetIndex < _cacheDataSet.Tables.Count)return _cacheDataSet.Tables[sheetIndex];throw new ArgumentOutOfRangeException("Sheet index out of range");}// 获取指定行的内容(从 0 开始的行索引)public async Task<object[]> GetRowAsync(string sheetName, int rowIndex){var table = await GetSheetByNameAsync(sheetName);if (rowIndex >= 0 && rowIndex < table.Rows.Count){return table.Rows[rowIndex].ItemArray;}throw new ArgumentOutOfRangeException("Row index out of range");}// 获取指定列的内容(从 0 开始的列索引)public async Task<object[]> GetColumnAsync(string sheetName, int columnIndex){var table = await GetSheetByNameAsync(sheetName);if (columnIndex >= 0 && columnIndex < table.Rows.Count){var column = new object[table.Rows.Count];for (int i = 0; i < table.Rows.Count; i++){column[i] = table.Rows[i][columnIndex];}return column;}throw new ArgumentOutOfRangeException("Column index out of range");}// 获取指定单元格内容public async Task<object> GetCellAsync(string sheetName, int rowIndex, int columnIndex){var table = await GetSheetByNameAsync(sheetName);if ( rowIndex >= 0 && rowIndex < table.Rows.Count &&columnIndex >= 0 && columnIndex < table.Columns.Count ){return table.Rows[rowIndex][columnIndex];}throw new ArgumentOutOfRangeException("Row or column index out of range");}// 获取指定 Sheet 行数public async Task<int> GetRowCountAsync(string sheetName){var table = await GetSheetByNameAsync(sheetName);return table.Rows.Count;}// 获取指定 Sheet 列数public async Task<int> GetColumnCountAsync(string sheetName){var table = await GetSheetByNameAsync(sheetName);return table.Columns.Count;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com