/// <summary>
/// 导出Excel
/// </summary>
/// <param name="path">路径</param>
/// <param name="tableHeaders">表头,Dictionary<propname,name> propname属性名 ,name表头名称</param>
/// <param name="data"></param>
/// <returns></returns>
public static string Export(string path, Dictionary<string, string> tableHeaders, Object[] data)
{
string fileName = $"{Guid.NewGuid()}.xlsx";
var filePath = $"{path}\\{fileName}";
FileInfo file = new FileInfo(filePath);
try
{
using (ExcelPackage package = new ExcelPackage(file))
{ ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("exportdata");
var row = 1;
for (int i = 0; i < tableHeaders.Count; i++)
{
var headName = tableHeaders.ElementAt(i).Value;
worksheet.Cells[row, i + 1].Value = headName;
}
foreach (object item in data)
{
row++;
var propts = item.GetType().GetProperties();
for (int i = 0; i < tableHeaders.Count; i++)
{
var propName = tableHeaders.ElementAt(i).Key;
var check = propts.FirstOrDefault(o => o.Name.ToLower() == propName.ToLower());
if (check == null) worksheet.Cells[row, i + 1].Value = "";
else
{
var value = check.GetValue(item);
worksheet.Cells[row, i + 1].Value = value == null ? "" : value.ToString();
};
}
}
package.Save();
}
}
catch (Exception ex)
{
LogHelper.Singleton.Write(typeof(ExcelHelper), ex);
return null;
}
return filePath;
}
  /// <summary>
/// 导入数据
/// </summary>
/// <param name="filePath">文件</param>
/// <returns></returns>
public static List<SchoolModel> ImportSchool(string filePath)
{
FileInfo file = new FileInfo(filePath);
List<SchoolModel> result = new List<SchoolModel>();
if (file.Length == 0) return null;
using (ExcelPackage package = new ExcelPackage(file))
{
//访问Excel的第一张表
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
//获取表格不为空的数
int rowCount = worksheet.Cells.Where(o=>o.Value!=null).Count();
//获取表格列数
int columnsCount = worksheet.Dimension.Columns;
          //跳过表头从第二行,读取数据
for (int row = 2; row <= rowCount; row++)
{
if (row < 2) return null;
if (worksheet.Cells[row, 1].Value == null
|| worksheet.Cells[row, 2].Value == null
|| worksheet.Cells[row, 3].Value == null
|| worksheet.Cells[row, 4].Value == null
|| worksheet.Cells[row, 5].Value == null
|| worksheet.Cells[row, 6].Value == null)
{
continue;
}
result.Add(new SchoolModel()
{
SchoolName = worksheet.Cells[row, 1].Value.ToString(),
SchoolCode = worksheet.Cells[row, 2].Value.ToString(),
SubjectName = worksheet.Cells[row, 3].Value.ToString(),
SubjectCode = worksheet.Cells[row, 4].Value.ToString(),
SchoolSystem = worksheet.Cells[row, 5].Value.ToString(),
TuitionStandard = decimal.Parse(worksheet.Cells[row, 6].Value.ToString()),
}); }
package.SaveAs(file);
}
return result;
}
///数据模型类
public class SchoolModel
{
public string SchoolName { get; set; }
public string SchoolCode { get; set; }
public string SubjectName { get; set; }
public string SubjectCode { get; set; }
public string SchoolSystem { get; set; }
public decimal TuitionStandard { get; set; }
}

 

最新文章

  1. 【干货分享】流程DEMO-补打卡
  2. linux下VNC的配置及使用
  3. ubuntu之使用sublime text3搭建Python IDE
  4. LeeCode - Unique Binary Search Trees
  5. XCode的安装包校验伪真
  6. 浏览器的CSS各种hack,大汇总
  7. shell&#39;s glob
  8. Class类中getMethods() 与getDeclaredMethods() 方法的区别
  9. nyoj 括号匹配
  10. C#向并口设备发送指令以获取并口设备的状态
  11. 勾股数组及其应用uva106
  12. Java 中的数组
  13. 持续集成篇 --Hudson持续集成服务器的安装配置与使用
  14. &lt;Mastering KVM Virtualization&gt;:第二章 KVM内部原理
  15. button的用法
  16. Android JavascriptBridge 详解(二)
  17. docker 下运行 postgresql 的命令
  18. L与_T
  19. Asp.Net MVC WebApi2 自动生成帮助文档
  20. 新概念 Lesson 2 Sorry, sir.

热门文章

  1. 小程序开发-Canvas画布组件
  2. 20190917-02Linux网络配置 000 003
  3. 关于Vue-loader的那些事儿
  4. MySql 实现数组根据下标获取对应值逻辑(array[i]逻辑)
  5. Python爬Boss,找工作,快人一步!!!
  6. django之admin配置
  7. [LeetCode] 79. 单词搜索(DFS,回溯)
  8. BFC与HasLayout的理解
  9. Linux里隐藏的计算器,你知道它的奥秘吗?
  10. powershell编程实例-001-生成指定大小的null/zero文件或随机文件