1.前端使用的是iView的Upload上传组件
2.后端使用的是ExcelPackage,当然可以使用NPOI
3.效果图:
后端代码如下:
1)
//导入
[HttpPost]
public JsonResult Import()
{
AjaxResult result = new AjaxResult();
HttpPostedFileBase fostFile = Request.Files["file"];
Stream streamfile = fostFile.InputStream;
try
{
using (ExcelPackage xlPackage = new ExcelPackage(streamfile))
{
// get the first worksheet in the workbook
ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1];
if (worksheet.Cells.Value == null || worksheet.Cells.Value == null)
{
result.msg = "表格没有数据";
return Json(result);
}
int rowCounr = (int)Math.Ceiling((decimal)((decimal)worksheet.Cells.Count() / 8));//所有表格数 / 列数 = 行数
List<PUB_PROPERTY> lst = new List<PUB_PROPERTY>();
PubPopertyService svc = new PubPopertyService();
#region
for (int i = 2; i <= rowCounr; i++)
{
PUB_PROPERTY entity = new PUB_PROPERTY();
if (string.IsNullOrWhiteSpace(worksheet.Cells[i, 2].Value.ToString()))
{
result.msg = "物业名称不能为空";
return Json(result);
}
if (worksheet.Cells[i, 2].Value.ToString().Length > 32)
{
result.msg = "物业名称不得超过32个字";
return Json(result);
}
if (string.IsNullOrWhiteSpace(worksheet.Cells[i, 3].Value.ToString()))
{
result.msg = "物业地址不能为空";
return Json(result);
}
if (worksheet.Cells[i, 3].Value.ToString().Length > 128)
{
result.msg = "物业地址不得超过128个字";
return Json(result);
}
if (string.IsNullOrWhiteSpace(worksheet.Cells[i, 4].Value.ToString()))
{
result.msg = "法定用途不能为空";
return Json(result);
}
if (worksheet.Cells[i, 4].Value.ToString().Length > 8)
{
result.msg = "法定用途不能超过8个字";
return Json(result);
}
if (worksheet.Cells[i, 5].Value == null)
{
result.msg = "用地面积不能为空";
return Json(result);
}
if (decimal.Parse(worksheet.Cells[i, 5].Value.ToString()) < 1 || decimal.Parse(worksheet.Cells[i, 5].Value.ToString()) > 999999999999)
{
result.msg = "请输入合法的用地面积";
return Json(result);
}
if (worksheet.Cells[i, 6].Value == null)
{
result.msg = "建筑面积不能为空";
return Json(result);
}
if (decimal.Parse(worksheet.Cells[i, 6].Value.ToString()) < 1 || decimal.Parse(worksheet.Cells[i, 6].Value.ToString()) > 999999999999)
{
result.msg = "请输入合法的建筑面积";
return Json(result);
}
if (worksheet.Cells[i, 7].Value == null)
{
result.msg = "户数不能为空";
return Json(result);
}
if (decimal.Parse(worksheet.Cells[i, 7].Value.ToString()) < 1 || decimal.Parse(worksheet.Cells[i, 7].Value.ToString()) > 999999999999)
{
result.msg = "请填写有效的户数";
return Json(result);
}
if (worksheet.Cells[i, 8].Value == null)
{
result.msg = "入伙年月不能为空";
return Json(result);
}
if (worksheet.Cells[i, 8].Value.ToString().Length != 7)
{
result.msg = "请填写有效的入伙年月";
return Json(result);
}
entity.PropName = worksheet.Cells[i, 2].Value.ToString();
entity.Address = worksheet.Cells[i, 3].Value.ToString();
entity.LegalUsage = worksheet.Cells[i, 4].Value.ToString();
entity.Area = decimal.Parse(worksheet.Cells[i, 5].Value.ToString());
entity.FloorArea = decimal.Parse(worksheet.Cells[i, 6].Value.ToString());
entity.HouseTotal = int.Parse(worksheet.Cells[i, 7].Value.ToString());
entity.BuiltYear = DateTime.Parse(worksheet.Cells[i, 8].Value.ToString());
entity.Creator = Current.Id;
entity.CreatorName = Current.Name;
entity.Created = DateTime.Now;
entity.Updator = Current.Id;
entity.UpdatorName = Current.Name;
entity.Updated = DateTime.Now;
entity.Status = 3;
entity.GovId = Current.GovId;
lst.Add(entity);
int Id = 0;
svc.Create(entity, out Id);
result.code = 1;
}
#endregion
}
}
catch (Exception ex)
{
log.ErrorFormat("[DSL-1027]导入辖区物业信息发生异常 #op={0}({1}).异常为:{3}", Current.Name, Current.Id,ex);
result.msg = new ErrorItem(1027, "导入辖区物业信息失败").ToString();
}
return Json(result);
}
前端代码如下:
1)
<Upload
action="/Prop/Import"
:format ="['xlsx']"
:on-success="handleSuccess"
:on-format-error="handleFormatError"
:on-error="handleError"
>
<Button type="ghost" icon="ios-cloud-upload-outline">导 入</Button>
</Upload>