.Net Core 读取,导入 excel数据 officeopenxml

        /// <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; }
}

 

 

 

posted @ 2020-10-13 16:49  李三元  阅读(549)  评论(0编辑  收藏  举报