当前位置: 首页 > article >正文

在Unity中使用Epplus写Excel

Overview

      

本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用.

官方的一个Demo:

https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp

如果你只有读的需求,可以阅读本文:

在Unity环境中读取Excel配置文件(入门)_unity读取excel文件-CSDN博客

这篇文章我使用的是ExcelReader库(可惜的是该库只能读取Excel),我依赖该库制作了一个编辑器工具,很方便.

Install

因为该库依赖较多,请先阅读本篇.

Nuget For Unity插件介绍-CSDN博客

Start writing code

using System;
using System.IO;
using OfficeOpenXml; //引用namespace
using UnityEngine;
 
public class EPPlusExample : MonoBehaviour
{
    void Start()
    {
        // 确保设置许可上下文
        //两个枚举Commercial/NonCommercial代表你商业/非商业用途使用
        //开始的时候随便设置一个,不会影响功能,但不设置会抛出异常
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
 
        // 创建 Excel 文件
        CreateExcelFile();
    }
 
    void CreateExcelFile()
    {
        // Excel 文件的路径
        string filePath = Path.Combine(Application.streamingAssetsPath, "Example.xlsx");
 
        // 使用构造函数在指定路径创建一个新的空白的workbook,
        // 如果还没有该Excel文件那么会创建,否则会打开
        // 注意:最后不要忘记调用一下Save()保存一下
        // 使用using确保正确释放资源,或者在合适的时机使用Dispose().
        using (var package = new ExcelPackage(filePath))
        {
            // 一个workbook必须有一张表,所以我们添加一张表
            var ws = package.Workbook.Worksheets.Add("Sheet1");
 
            //  var ws=package.Workbook.Worksheets["Sheet1"];使用索引器可以直接获得一个已存在的表
 
            // 写入表头
            ws.Cells[1, 1].Value = "日期";
            // ws.Cells["A1"].Value = "日期";也可以这样写,都代表第一列第一行
            ws.Cells[1, 2].Value = "价格";
            ws.Cells[1, 3].Value = "数量";
 
            // 写入数据
            ws.Cells[2, 1].Value = DateTime.Now.ToString("yyyy-MM-dd");
            ws.Cells[2, 2].Value = 100;
            ws.Cells[2, 3].Value = 5;
 
            ws.Cells[3, 1].Value = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
            ws.Cells[3, 2].Value = 150;
            ws.Cells[3, 3].Value = 3;
            package.Save();//Save方法代表保存原始文件,就是说你修改了那么保存一下
 
            // 使用Style可以访问大多数单元格的格式和样式。
            // ws.Cells[2, 1].Style.Font.Bold=true;
            
            // 保存到指定路径
            //FileInfo file = new FileInfo(filePath);
            //package.SaveAs(file);这可以理解为另存
            //如果最后选择另存,那么开头的构造函数不传入路径.
            //SaveAs也有很多重载,使用FileInfo对象或者直接使用字符串都可以
//---------------------下述规则是和区域性无关的,遵循 OOXML 标准-----------------------------------
            // (1) 单元格地址的写法
 
            // A1:C1:表示第一行从列 A 到列 C 的单元格。C3:表示单独的 C3 单元格。
            // 单元格地址在代码中用逗号(, )分隔,表示多个区域。
            // ws.Cells["A1:C1,C3"].Style.Font.Bold = true; 
 
            //(2) 数字格式
 
            // 数字格式中:
            // 使用点号(.)作为小数点。
            // 使用逗号(,)作为千位分隔符
            // ws.Cells["B2:B3"].Style.NumberFormat.Format = "#,##0.00";
            // 格式说明:
            // #,##0.00 表示整数部分有千位分隔符,小数部分保留两位。
            // 应用后,单元格的值显示为 1,234.56。
            
//             1. 格式的组成
//             "#,##0.00" 是一个数字格式字符串,它定义了如何在 Excel 中显示数字。它由两部分组成:
//
//             #,##:
//             表示数字的千位分隔符。
//             每隔三位用逗号(,)分隔,例如 1,000 或 1,000,000。
//             如果数字不足千位,不显示逗号。例如 123。
//
//             0.00:
//             0:表示数字的必须显示位数(如果数字没有对应的位数,会补零)。
//             例如:12 会显示为 12.00。
//             .00:表示保留两位小数。
//             即使输入的数字没有小数部分,也会补充显示小数部分。
//             例如:5 会显示为 5.00。
//             2. 分组与规则
//             (1) #,## 的具体含义
//             #:
//             表示可选数字位,如果对应的位置没有数字,不显示任何内容。
//             例如:数字 123 使用 #,## 格式会显示为 123,而 1234 会显示为 1,234。
//             (2) 0.00 的具体含义
//             0:
//             表示必须显示数字位,如果对应位置没有数字,则填充 0。
//             例如:
//             数字 5 使用 0.00 格式会显示为 5.00。
//             数字 0 会显示为 0.00。
//             .00:
//             表示显示两位小数位。如果数字本身有更多小数,会进行四舍五入。
//             例如:
//             数字 3.14159 使用 0.00 格式会显示为 3.14。
//             数字 2 会显示为 2.00。
            
            // (3) 公式
            
            // 在 EPPlus 中定义公式时:
            // 参数之间使用逗号(,)分隔,而不是分号(;)。
            // 公式中不需要添加等号(=),直接写公式的主体部分。
            // 譬如:
            // ws.Cells["C11"].Formula = "SUBTOTAL(9,\"C1:C10\")";
            // SUBTOTAL 是一个 Excel 内置函数,用于计算汇总值。
            // 参数解释:
            // 9 表示求和(SUM)。
            // "C1:C10" 是目标区域。
            // 公式在 Excel 中会被正确解析为 =SUBTOTAL(9,C1:C10)
 
           
 
#if UNITY_EDITOR
            UnityEditor.AssetDatabase.Refresh(); //编辑器下强制编译一下.刷出该Excel文件
#endif
        }
 
        Debug.Log($"Excel 文件已创建:{filePath}");
    }
}

http://www.kler.cn/a/400831.html

相关文章:

  • BERT模型中的嵌入后处理与注意力掩码
  • 2.5D视觉——Aruco码定位检测
  • 抖音热门素材去哪找?优质抖音视频素材网站推荐!
  • 实用教程:如何无损修改MP4视频时长
  • Gin 框架入门(GO)-1
  • 第 17 章 - Go语言 上下文( Context )
  • 使用Mybatis向Mysql中的插入Point类型的数据全方位解析
  • API 数据处理与 SQL 批量更新技巧:CASE 语句优化操作指南
  • RadSystems 自定义页面全攻略:个性化任务管理系统的实战设计
  • CSS3_过渡(八)
  • 力扣(leetcode)面试经典150题——26. 删除有序数组中的重复项
  • 35.搜索插入位置-力扣(LeetCode)
  • ssm139选课排课系统的设计与开发+vue(论文+源码)_kaic
  • React Native 全栈开发实战班 - 打包发布之热更新
  • shell编程规范和脚本变量
  • UE5 猎户座漂浮小岛 07 场景
  • TCP/IP--Socket套接字--JAVA
  • Affleck–Kennedy–Lieb–Tasaki (AKLT) 态
  • 阿里云通义大模型团队开源Qwen2.5-Coder:AI编程新纪元
  • 【qt】控件3
  • python+Django+MySQL+echarts+bootstrap制作的教学质量评价系统,包括学生、老师、管理员三种角色
  • php 与 thinkphp 13 张 表 关联 查询,a.pry_key=b.pry_key and c.pry_key= b.pry_key 代码示例
  • 十四、SpringMVC的执行流程
  • nginx源码安装配置ssl域名
  • 设计模式之装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
  • PHP 展开运算符 (...) 使用笔记