首页 > 其他分享 >在Unity中使用Epplus写Excel

在Unity中使用Epplus写Excel

时间:2024-11-18 13:14:46浏览次数:3  
标签:数字 Epplus Cells Excel Value Unity ws 0.00

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文件那么会创建,否则会打开
        // 使用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;

            // 使用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}");
    }
}

标签:数字,Epplus,Cells,Excel,Value,Unity,ws,0.00
From: https://blog.csdn.net/R3333355726856/article/details/143854560

相关文章

  • Unity实现鼠标框选功能
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclassDrawRect:MonoBehaviour{publicstaticDrawRectInstance;publicDrawRect(){Instance=this;}......
  • 【Unity】ScriptableObject的应用和3D物体跟随鼠标移动:鼠标放置物体在场景中
    需求说明结合前篇,仓库管理和获取鼠标点击的世界坐标位置两篇内容,已经实现了:鼠标或键盘控制玩家移动;玩家触碰物体后,将物体放入仓库;鼠标点击仓库栏中的物体,任意放在空间中的功能。接下来想要实现:鼠标点击仓库栏的物体之后,物体会跟随鼠标移动;键盘控制待放置的......
  • PICO & Unity VR实战 经验(1)
    (1)安装团结引擎Hub和编辑器,并在添加模块窗口处,勾选AndroidSDK&NDKTools和OpenJDK。和简体中文语言包。(2)点击新建项目,未安装里面有3D(URP),点击下载并使用。注:组件要是可以更新的,这里建议你更新。(3)如何导入PICOVR的SDK到Unity教程(4)导入完成时,会弹出一个窗口——警告,......
  • unity3d————场景异步加载
    总结本文介绍了Unity中场景切换的两种方法:同步切换和异步切换。同步切换在切换场景时会删除当前场景的所有对象并加载下一个场景的信息,可能导致卡顿。因此,异步切换被引入来解决这个问题。异步切换有两种实现方式:通过事件回调函数和通过协程。通过事件回调函数实现异步加载代......
  • excel
      1、在一个表格里敲=才用公式2、Excel填充有多种方法,包括使用填充柄、快捷键、格式刷、快速填充功能等,这些方法可以提高数据输入的效率。‌‌1填充柄拖放‌:这是最直观的方法。选中需要填充的起始单元格,将鼠标移至单元格右下角,当鼠标指针变为十字形时,点击并拖动到目标区域......
  • Excel 与 Python 的强强联合:开启数据分析与处理的新大门 
     在数据处理和分析的世界里,Excel一直是大家耳熟能详、应用广泛的工具,凭借其直观的界面和丰富的函数,能够轻松应对许多基础的数据操作。而Python呢,作为一门功能强大、灵活多变的编程语言,在数据科学领域更是有着无可替代的地位。当Excel遇上Python,它们就如同默契的搭档,能......
  • 如何让Excel公式中的参数实现动态引用
        如果你想成为Excel函数高手,仅仅掌握VLOOKUP和Countif等函数是远远不够的,起码你得学会使用INDIRECT函数,熟练掌握INDIRECT函数能让你从一个初学者晋级为高手,学会它就好比孙悟空掌握了72般变化的基本功,你说厉不厉害。    INDIRECT函数用于将文本字符串转换为......
  • Python读写Excel的全面教程
    Python读写Excel的全面教程在数据分析和处理的过程中,Excel是一个非常常用的工具。Python作为一种强大的编程语言,提供了多种库来进行Excel文件的读写操作。本文将详细介绍如何使用Python读写Excel文件,涵盖常用的库、基本操作、实例讲解以及一些高级技巧。一、环境准备在开......
  • HTML Table 输出Excel
    stringhtml=RenderControl(this.Page);//获取控件最终呈现的HTML,最好是TableMemoryStreamstream=newMemoryStream(Encoding.UTF8.GetBytes(html));System.IO.MemoryStreamms=stream;byte[]bt=ms.ToArray();//客户端保存的文件名//以字符流的形式下载文件......
  • Excel复制数字显示井号的解决方法
    Excel复制数字显示井号的解决方法在使用Excel编辑表格文件的过程中,许多用户可能会遇到这样的问题:粘贴的内容中出现了井号(#)。这些井号的出现不仅影响了数据的可读性,还可能让人误以为数据丢失或损坏。实际上,井号的出现通常是因为数字所在的单元格列宽不够大,导致数字无法完全......