Проверить пустые поля в файле XLSX - (EPPlus) ASP.NET - PullRequest
0 голосов
/ 04 июня 2018

Я делаю импорт файла XLSX в C #, используя ExcelPackage.Я делаю некоторые проверки в импорте 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;
}

1 Ответ

0 голосов
/ 04 июня 2018

Можете ли вы проверить это?кажется, у этих ребят есть ответ.их подход различен, но вы, возможно, сможете получить представление https://www.codeproject.com/Questions/561817/DetectingplusEmpypluscellplusinplusExcelplusRange

...