Commit 2a50eb79 by 李承祥

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

parent cc249204
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal;
......@@ -78,7 +79,9 @@ public ApiResponse Import([FromForm] IFormCollection form)
Remark = "上传成功"
};
if (templateService.InsertFirst(template))
{
templateService.SendEmail(path, $"{hospital.HosName}首次上传模板", "上传成功");
}
}
return new ApiResponse(ResponseType.OK);
}
......@@ -90,9 +93,9 @@ public ApiResponse Import([FromForm] IFormCollection form)
/// <returns></returns>
[Route("extractdata")]
[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);
}
}
......
......@@ -14,6 +14,7 @@
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace Performance.Services
{
......@@ -135,6 +136,16 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
// }
//}
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++)
{
......@@ -174,7 +185,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
if (headInfo != null)
{
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
var headInfo = sheet.PerHeader.FirstOrDefault(t => t.CellValue == data.ColumnName);
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)
}
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