ZKEACMS数据导入(Excel)
ZKEASOFT May 17, 2018
数据导入是软件开发中常使用的功能,ZKEACMS提供了方便快捷的方式来导入Excel数据。这里读取Excel数据主要还是通过OpenXML。
ExcelReader<T>
使用ExcelReader类来读取Excel的内容,并转成对应的类型,使用方式如下:
[HttpPost]
public IActionResult Import()
{
var reader = new ExcelReader<Student>(Request.Form.Files[0].OpenReadStream());
Service.BeginBulkSave();
foreach (var item in reader.ToList())
{
var result = Service.Add(item);
}
Service.SaveChanges();
return View();
}
类型转换
ExcelReader会跟据实际的类型来做转换,也可以自定义转换。例如需要将日期格式为20180517
这种转成日期类型,可实现IValueTypeConvert
接口来做自定义转换:
public class DateTypeConvert : IValueTypeConvert
{
public virtual Type SupportType { get { return typeof(DateTime); } }
public object Convert(string value)
{
if (value.IsNotNullAndWhiteSpace())
{
string pattern = "^([0-9]{4})([0-9]{2})([0-9]{2})$";
DateTime dateTime = DateTime.MinValue;
Regex.Replace(value, pattern, evaluator =>
{
dateTime = new DateTime(int.Parse(evaluator.Groups[1].Value), int.Parse(evaluator.Groups[2].Value), int.Parse(evaluator.Groups[3].Value));
return evaluator.Groups[0].Value;
});
if (dateTime == DateTime.MinValue)
{
if (DateTime.TryParse(value, out dateTime))
{
return dateTime;
}
}
return dateTime;
}
return null;
}
}
public class NullAbleDateTypeConvert : DateTypeConvert
{
public override Type SupportType { get { return typeof(DateTime?); } }
}
然后在使用时,加入该转换方式即可:
reader.Converts.Add(new DateTypeConvert());
reader.Converts.Add(new NullAbleDateTypeConvert());
导入数据格式
导入的Excel格式,只需要Excel标题的名字和类型的属性显示名称一致即可,例如: