Commit 2a50eb79 by 李承祥

写入excel时,校验数据类型;excel列头问题修改

parent cc249204
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal; using Microsoft.AspNetCore.Http.Internal;
...@@ -78,8 +79,10 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -78,8 +79,10 @@ public ApiResponse Import([FromForm] IFormCollection form)
Remark = "上传成功" Remark = "上传成功"
}; };
if (templateService.InsertFirst(template)) if (templateService.InsertFirst(template))
{
templateService.SendEmail(path, $"{hospital.HosName}首次上传模板", "上传成功"); templateService.SendEmail(path, $"{hospital.HosName}首次上传模板", "上传成功");
} }
}
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
...@@ -90,9 +93,9 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -90,9 +93,9 @@ public ApiResponse Import([FromForm] IFormCollection form)
/// <returns></returns> /// <returns></returns>
[Route("extractdata")] [Route("extractdata")]
[HttpPost] [HttpPost]
public ApiResponse ExtractData([FromBody]ApiRequest request) public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Delete"), FromBody]HospitalRequest request)
{ {
var filePath = extractService.ExtractData(24); var filePath = extractService.ExtractData(request.ID);
return new ApiResponse(ResponseType.OK, "OK", filePath); return new ApiResponse(ResponseType.OK, "OK", filePath);
} }
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
namespace Performance.Services namespace Performance.Services
{ {
...@@ -135,6 +136,16 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -135,6 +136,16 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
// } // }
//} //}
var maxHeaderRowNumber = sheet.PerHeader.Max(t => t.PointRow); var maxHeaderRowNumber = sheet.PerHeader.Max(t => t.PointRow);
sheet.PerHeader.ForEach(t =>
{
if (t.IsHasChildren)
{
var maxnum = t.Children.Max(c => c.PointRow);
maxHeaderRowNumber = maxHeaderRowNumber > maxnum ? maxHeaderRowNumber : maxnum;
}
});
if (sheet.SheetType == SheetType.Workload)
maxHeaderRowNumber += 1;
//清空数据行 //清空数据行
for (int i = maxHeaderRowNumber + 1; i < importSheet.LastRowNum + 1; i++) for (int i = maxHeaderRowNumber + 1; i < importSheet.LastRowNum + 1; i++)
{ {
...@@ -174,7 +185,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -174,7 +185,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
if (headInfo != null) if (headInfo != null)
{ {
var value = (keyValues[item].Invoke(dataList[i]) ?? "").ToString(); var value = (keyValues[item].Invoke(dataList[i]) ?? "").ToString();
importRow.CreateCell(headInfo.PointCell).SetCellValue(value); importRow.CreateCell(headInfo.PointCell).SetCellValue(Verify(value));
} }
} }
} }
...@@ -196,7 +207,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -196,7 +207,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
var headInfo = sheet.PerHeader.FirstOrDefault(t => t.CellValue == data.ColumnName); var headInfo = sheet.PerHeader.FirstOrDefault(t => t.CellValue == data.ColumnName);
if (headInfo != null) if (headInfo != null)
{ {
importRow.CreateCell(headInfo.PointCell).SetCellValue(data.Value.ToString()); importRow.CreateCell(headInfo.PointCell).SetCellValue(Verify(data.Value.ToString()));
} }
} }
} }
...@@ -283,5 +294,29 @@ private List<PerSheet> GetFileData(string path) ...@@ -283,5 +294,29 @@ private List<PerSheet> GetFileData(string path)
} }
return sheetList; return sheetList;
} }
/// <summary>
/// 校验数据格式,并转换
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public dynamic Verify(string obj)
{
try
{
//判断值是否为double类型
if (!string.IsNullOrEmpty(obj) && Regex.Match(obj.Trim(), @"([1-9]\d*\.?\d*)|(0\.\d*[1-9])|0").ToString() == obj.Trim())
return ConvertHelper.To<double>(obj);
//判断值是否为日期格式
else if (!string.IsNullOrEmpty(obj) && Regex.Match(obj.Trim(), @"(19|20)\d{2}(-|/)[01]?\d(-|/)[0123]?\d( [012]?\d\:\d{2}\:\d{2})?").ToString() == obj.Trim())
return ConvertHelper.To<DateTime>(obj).ToString("yyyy/MM/dd");
else
return obj;
}
catch
{
return obj;
}
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment