C# 使用EPPlus读取保存Excel

发布时间 2023-09-01 16:16:48作者: 敲代码的小胖虎

使用EPPlus库

EPPlus是一个流行的用于操作Excel文件的库,它提供了简单易用的API来创建、编辑和保存Excel文件。

代码

using OfficeOpenXml;
using System.IO;
// 创建ExcelPackage对象
var package = new ExcelPackage();
// 添加工作表和数据
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells[1, 1].Value = "Hello";
worksheet.Cells[1, 2].Value = "World";
// 保存Excel文件
string filePath = "C:\\example.xlsx";
package.SaveAs(new FileInfo(filePath));

使用EPPlus库遇到了无法保存的问题,需要指明非商业应用

ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

未指明非商用报错
ExceptionType: "System.InvalidOperationException"
Message: "Error saving file E:\\-\\-\\Excel\\-MRO请购单20230901151240.xlsx"
StackTrace: " 在 OfficeOpenXml.ExcelPackage.Save()\r\n -.-.DownLoadExcel(String fac) 位置 E:\\-\\-\\-.aspx.cs:行号 461"

我的示例代码

public static string DownLoadExcel(string fac)
{
	ExcelPackage.LicenseContext = LicenseContext.NonCommercial;//指明非商用 没有的话无法保存
	// 先下载请购单模板
	string templatePath = HttpContext.Current.Server.MapPath("Files/MROUpload.xlsx");
	ExcelPackage package = new ExcelPackage(new FileInfo(templatePath));

	//处理数据写入excel 暂未写

	int month = sfci.GetFCMonth(fac);
	int year = sfci.GetFCYear(fac);
	string nowtime = DateTime.Now.ToString("yyyyMMddHHmmss");
	string name = fac + "SMT" + year + "年" + month + "月" + "MRO请购单" + nowtime + ".xlsx";
	// 保存 Excel 文件到指定路径
	string savePath = HttpContext.Current.Server.MapPath("Excel/") + name;
	package.SaveAs(new FileInfo(savePath));

	// 释放资源
	package.Dispose();
	return name;

}