Unity 打包PC 对Excel的读写EPPlus 插件

打包Epplus 设置
阿斯蒂阿斯蒂

#代码 1级标题

using System;
using System.Data;
using System.IO;
using System.Linq;
using OfficeOpenXml;
using UnityEngine;

public class TestManniu : MonoSingleton
{
///
/// Excel文件名
///
private string excelName = “Train”;

/// <summary>
/// Excel文件Sheet名称
/// </summary>
private string sheetName = "Sheet1";

public string ExcelPath
{
    get
    {
        return Application.streamingAssetsPath + "/" + excelName + ".xls";
    }
}

private void Start()
{

// DataTable dataTable = ReadExcelToDataTable(ExcelPath, sheetName, true);
// Debug.Log(dataTable.Rows.Count);
}

private void Update()
{
    if (Input.GetKeyDown(KeyCode.A))
    {
        WriteExcel("张三", "2323");
    }
}

/// <summary>
/// 写入数据到Excel
/// </summary>
/// <param name="id">训练者唯一ID</param>
/// <param name="trainerName">训练者姓名</param>
public void WriteExcel(string id, string trainerName)
{
    FileInfo fileInfo = new FileInfo(ExcelPath);
    if (!fileInfo.Exists)
    {
        using (ExcelPackage package = new ExcelPackage(fileInfo))
        {
            //  在 excel 空文件添加新 sheet,并设置名称。
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(sheetName);

            worksheet.Cells[1, 1].Value = "ID";
            worksheet.Cells[1, 2].Value = "Name";
            worksheet.Cells[1, 3].Value = "StartTime";
            worksheet.Cells[1, 4].Value = "EndTime";

            worksheet.Cells[2, 1].Value = id;
            worksheet.Cells[2, 2].Value = trainerName;
            worksheet.Cells[2, 3].Value = DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");
            worksheet.Cells[2, 4].Value = "20";

            package.Save();
        }
    }
    else //  在原Excel基础上进行写入数据
    {
        int index = ReadExcelToDataTable(ExcelPath, sheetName, true).Rows.Count + 2;

        using (ExcelPackage package = new ExcelPackage(fileInfo))
        {
            ExcelWorksheet worksheet = package.Workbook.Worksheets.FirstOrDefault(go => go.Name == sheetName);

            worksheet.Cells[index, 1].Value = id;
            worksheet.Cells[index, 2].Value = trainerName;
            worksheet.Cells[index, 3].Value = DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");
            worksheet.Cells[index, 4].Value = "训练结束时填写";

            package.Save();
        }
    }
}

/// 将excel中的数据导入到DataTable中
///
/// excel文件的名称
/// excel工作薄sheet的名称
/// 第一行是否是属性
/// 返回的DataTable
public DataTable ReadExcelToDataTable(string fileName, string sheetName, bool isFirstRowColumn)
{
if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(sheetName)) return null;
try
{
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
var package = new ExcelPackage(fs);
DataTable data = new DataTable();

        ExcelWorkbook workBook = package.Workbook;
        if (workBook != null)
        {
            if (workBook.Worksheets.Count > 0)
            {
                ExcelWorksheet currentWorksheet = workBook.Worksheets[sheetName];

                int lastRow = currentWorksheet.Dimension.End.Row;
                int lastColumn = currentWorksheet.Dimension.End.Column;

                int columnCount = 1;
                while (columnCount <= lastColumn)
                {
                    data.Columns.Add(Convert.ToString(currentWorksheet.Cells[1, columnCount].Value));
                    columnCount++;
                }

                int rowCount = 0;
                if (isFirstRowColumn) rowCount = currentWorksheet.Dimension.Start.Row + 1;
                else rowCount = currentWorksheet.Dimension.Start.Row;

                while (rowCount <= lastRow)
                {
                    columnCount = 1;
                    DataRow newRow = data.NewRow();
                    while (columnCount <= lastColumn)
                    {
                        newRow[data.Columns[columnCount - 1]] =
                            Convert.ToString(currentWorksheet.Cells[rowCount, columnCount].Value);
                        
                        Debug.Log(currentWorksheet.Cells[rowCount, columnCount].Value);
                        columnCount++;
                    }
                    rowCount++;
                    data.Rows.Add(newRow);
                }
            }
            fs.Close();
            fs.Dispose();
        }
        return data;
    }
}
catch (Exception ex)
{
    //LogHelper.WriteLog(ex);
    return null;
}

}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用EPPlus件来Excel文件,并在Unity中处理Excel数据。以下是使用EPPlusExcel文件的简单示例代码: ```csharp using System.IO; using OfficeOpenXml; public class ExcelReader { public void ReadExcel(string filePath) { FileInfo fileInfo = new FileInfo(filePath); ExcelPackage excelPackage = new ExcelPackage(fileInfo); // 取第一个工作表 ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets[0]; // 取单元格数据 int rowNumber = 1; int columnNumber = 1; string cellValue = worksheet.Cells[rowNumber, columnNumber].Value.ToString(); Debug.Log(cellValue); // 取整个工作表数据 int rowCount = worksheet.Dimension.Rows; int columnCount = worksheet.Dimension.Columns; for (int i = 1; i <= rowCount; i++) { for (int j = 1; j <= columnCount; j++) { string value = worksheet.Cells[i, j].Value.ToString(); Debug.Log(value); } } } } ``` 在这个示例代码中,我们首先创建了一个ExcelPackage对象,然后打开Excel文件并取第一个工作表。接下来,我们可以通过worksheet.Cells[rowNumber, columnNumber]访问单元格数据,也可以通过worksheet.Dimension.Rows和worksheet.Dimension.Columns取整个工作表的数据。最后,我们可以在Unity中使用Debug.Log输出取到的Excel数据。 需要注意的是,EPPlus件需要安装.NET Framework 4.5或更高版本。另外,由于Unity使用的是Mono运行时,可能需要在Unity中手动添加对System.IO.Compression.ZipFile的引用,才能正确使用EPPlus件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值