验证 XLSX 文件中的空字段 - (EPPlus) ASP.NET



我正在使用ExcelPackage导入C #中的XLSX文件。我在 Ex 导入中进行了一些验证:数字、文本以及字段是否为空。

注意:如果文件中的所有列都已填充,则导入成功完成。

应用程序的需求之一是验证工作表中是否存在空字段。

示例:在 {A2: C2} 范围内。

其中 A2 是 int 类型,B2 是字符串,C2 是浮点数

1 |  A2  |   B2   |  C2  |
2 |      | house1 | 50,8 |
3 |  50  | house2 | 50,0 |

我需要抛出一个异常,说明该文件包含空字段。

问题是,在读取字段 A2时被忽略,字段 B2 "假设"A2 的位置,即字段 A2 是第一个单元格,因此必须读取它,即使它是空的,并且如果您抛出异常声明它包含空字段。

所以我的问题是:我需要"强制"字段,即使它们是空的,如果是,则抛出异常我该怎么做?

我的代码是这样的:

public static List<ModularCostCapacitor> ReadFlieAndBuildModularCostsCapacitors(HttpPostedFile upLoad) 
{
var fileOriginalName = upLoad.FileName;
var fileOriginalExtension = Path.GetExtension(fileOriginalName);
int rowNum = 0;
if (fileOriginalExtension.ToUpper().Equals("XLS") || fileOriginalExtension.ToUpper().Equals("XSLX"))
{
try
{
using (var excel = new ExcelPackage(upLoad.InputStream))
{
var ws = excel.Workbook.Worksheets.First();
var hasHeader = true;
int startRow = hasHeader ? 2 : 1;
for (rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
int i = 0;
foreach (var cell in wsRow)
{
switch (i)
{
case 0:
if (ValidateCellsXLSX(cell.Text))
{
// ...
}
break;
case 1:
if (!String.IsNullOrEmpty(cell.Text))
{
// ...
}
break;
case 2:
if (ValidateCellsXLSX(cell.Text))
{
// ...
}
break;
case 3:
if (ValidateCellsXLSX(cell.Text))
{
// ...
}
break;
case 4:
if (ValidateCellsXLSX(cell.Text))
{
// ...
}
break;
case 5:
if (ValidateCellsXLSX(cell.Text))
{
// ...
}
break;
case 6:
if (ValidateCellsXLSX(cell.Text))
{
// ...
}
break;
default:
break;
}
i++;
}
}
}
}
catch (Exception ex)
{
throw ex;
}

}

验证码:

public static bool ValidateCellsXLSX(string cell)
{
Regex regex = new Regex(@"[;!*#&@?()'$~^<>ºª%{}A-Za-z]");
string validString = cell.Replace("%", "").Replace("R$", "").Replace("-", "");
Match match = regex.Match(validString);
if (String.IsNullOrEmpty(cell))
{
throw new Exception("File contains empty fields";);
}
else if (match.Success)
{
throw new Exception("File contains invalid characters");
}
return true;
}

你能检查一下吗? 看来这些家伙有答案了。他们的方法不同,但你也许能够得到一个想法 https://www.codeproject.com/Questions/561817/DetectingplusEmpypluscellplusinplusExcelplusRange

最新更新