更新
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
using EPPlus.Core.Extensions;
|
||||
|
||||
using OfficeOpenXml;
|
||||
using OfficeOpenXml.Style;
|
||||
|
||||
@@ -30,7 +34,45 @@ public class EPPlusHelper //公式计算最后需要调用Calculate()
|
||||
package.Save();
|
||||
}
|
||||
}
|
||||
public List<T> ReadExcel<T>(string path, int worksheetIndex) where T : class, new()
|
||||
{
|
||||
FileInfo fi = new(path);
|
||||
using ExcelPackage package = new(fi);
|
||||
var worksheet = package.Workbook.Worksheets[worksheetIndex];
|
||||
////获取worksheet的行数
|
||||
//int rows = worksheet .Dimension.End.Row;
|
||||
////获取worksheet的列数
|
||||
//int cols = worksheet .Dimension.End.Column;
|
||||
//worksheet.TrimLastEmptyRows();
|
||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve;
|
||||
try
|
||||
{
|
||||
return package.ToList<T>(worksheetIndex, configuration => configuration.SkipCastingErrors());
|
||||
}
|
||||
catch (EPPlus.Core.Extensions.Exceptions.ExcelValidationException)
|
||||
{
|
||||
System.Windows.MessageBox.Show("列名不存在或不匹配或检查表头是否存在换行。");
|
||||
}
|
||||
finally
|
||||
{
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomainOnAssemblyResolve;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Assembly CurrentDomainOnAssemblyResolve(object sender, ResolveEventArgs args)
|
||||
{
|
||||
if (!args.Name.Contains("ComponentModel.Annotations"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var assemblyFile = Path.Combine(
|
||||
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
|
||||
"System.ComponentModel.Annotations.dll"
|
||||
);
|
||||
return File.Exists(assemblyFile) ? Assembly.LoadFrom(assemblyFile) : null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 给第一个表中的单元格赋值
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user