• 您的位置:首页 > 新闻动态 > Unity3D

    Excel文件操作(创建、读取、写入、修改)

    2022/9/11      点击:

    读取Excel文件,需要导入一些dll文件,才能正常的读取、创建Excell文件:


    创建Excel文件


    using OfficeOpenXml;
    using System.IO;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string _filePath = Application.streamingAssetsPath + "/学生信息.xlsx";
            string _sheetName = "详情";
    
            FileInfo _excelName = new FileInfo(_filePath);
            if (_excelName.Exists)
            {
                //删除旧文件,并创建一个新的 excel 文件。
                _excelName.Delete();
                _excelName = new FileInfo(_filePath);
            }
    
            //通过ExcelPackage打开文件
            using (ExcelPackage package = new ExcelPackage(_excelName))
            {
                //在 excel 空文件添加新 sheet,并设置名称。
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(_sheetName);
    
                //添加列名
                worksheet.Cells[1, 1].Value = "学号";
                worksheet.Cells[1, 2].Value = "姓名";
                worksheet.Cells[1, 3].Value = "性别";
    
                //添加一行数据
                worksheet.Cells[2, 1].Value = 100001;
                worksheet.Cells[2, 2].Value = "张三";
                worksheet.Cells[2, 3].Value = "男";
    
                //添加一行数据
                worksheet.Cells[3, 1].Value = 100002;
                worksheet.Cells[3, 2].Value = "李四";
                worksheet.Cells[3, 3].Value = "女";
    
                //添加一行数据
                worksheet.Cells[4, 1].Value = 120033;
                worksheet.Cells[4, 2].Value = "Saw";
                worksheet.Cells[4, 3].Value = "男";
    
                //保存excel
                package.Save();
            }
        }
    }

    读取Excel文件

    读取Excel,主要操作就是先用IO命名空间里面的文件读取类以文件流形式读取文件,然后再从dll里面的API去转化数据保存下来,然后使用DataSet数据结构保存数据:


    using Excel;
    using System.Data;
    using System.IO;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            DataRowCollection _dataRowCollection = ReadExcel(Application.streamingAssetsPath + "/学生信息.xlsx");
            for (int i = 0; i < _dataRowCollection.Count; i++)
            {
                Debug.Log(_dataRowCollection[i][0] + " " + _dataRowCollection[i][1] + " " + _dataRowCollection[i][2]);
            }
        }
    
        //通过表的索引,返回一个DataRowCollection表数据对象
        private DataRowCollection ReadExcel(string _path, int _sheetIndex = 0)
        {
            FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.Read);
            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            DataSet result = excelReader.AsDataSet();
            return result.Tables[_sheetIndex].Rows;
        }
    
        //通过表的名字,返回一个DataRowCollection表数据对象
        private DataRowCollection ReadExcel(string _path, string _sheetName)
        {
            FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.Read);
            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            DataSet result = excelReader.AsDataSet();
            return result.Tables[_sheetName].Rows;
        }
    }

    修改Excel数据

    修改Excel数据,首先需要知道自己要修改的哪一行那一列的数据,如果是全部修改,不如将原来的Excel删除,然后再构建一个,如果只是修改某行某列的数据的话,可以使用下面的方法,比如,修改4行3列的数据:

    using Excel;
    using OfficeOpenXml;
    using System.Data;
    using System.IO;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/学生信息.xlsx";
            UpdateExcel(path);
        }
    
        private void UpdateExcel(string filePath)
        {
            FileInfo _excelName = new FileInfo(filePath);
            using (ExcelPackage package = new ExcelPackage(_excelName))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets["详情"];
                //修改某一行的数据
                worksheet.Cells[4, 3].Value = "女";
                //保存excel
                package.Save();
            }
        }
    }

    读取Excel需要引入DLL,注意不同的Excel版本,可能会有一些问题出现。

    本文来自网络,版权归原作者所有