Overview
本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用.
官方的一个Demo:
https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp
如果你只有读的需求,可以阅读本文:
在Unity环境中读取Excel配置文件(入门)_unity读取excel文件-CSDN博客
这篇文章我使用的是ExcelReader库(可惜的是该库只能读取Excel),我依赖该库制作了一个编辑器工具,很方便.
Install
因为该库依赖较多,请先阅读本篇.
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