2017-06-08 1 views
0

J'utilise Epplus pour télécharger le fichier. J'ai deux feuilles au format .xlsx.Je veux m'assurer que chaque cellule a de la valeur.Par exemple dans mon excel j'ai la boîte déroulante. Si un utilisateur a des détails dans la première feuille et la deuxième feuille est vide. Mais cette feuille vide n'a qu'une valeur qui est ajoutée dans la feuille par erreur en utilisant cette liste déroulante. Ainsi à ce stade il montrera objet erreur de référence nulle quand elle va dans cette boucleValidation des données pour chaque cellule pour vérifier si la valeur est disponible ou non en utilisant EPplus

for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++) 
    { 

     if (int.TryParse(s.Cells[rowIterator, 1].Value.ToString(), out n) && int.TryParse(s.Cells[rowIterator, 2].Value.ToString(), out n)) 
     { 
      Pss.Pbr = Convert.ToInt32(s.Cells[rowIterator, 1].Value); 
      Pss.Amount = Convert.ToInt32(s.Cells[rowIterator, 2].Value); 
     Ps.Add(Pss); 

     } 
} 

comment valider que toutes les colonnes et rangées ont des valeurs

+0

Vous essayez d'ajouter la validation des entrées utilisateur https://stackoverflow.com/documentation/epplus/8739/user-input-validation#t=201706081129231042737 ou que vous essayez de vérifier dans votre code que le cellule a une valeur? – Magnetron

Répondre

1

dans la boucle, vérifier si la cellule est non nul et n'est pas vide, comme ceci:

bool allRangeHasValue=true; 
for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++) 
{ 
    for(int col =1;col<=s.Dimension.End.Column;col++) 
    { 

     if(String.IsNullOrWhiteSpace(s.Cells[rowIterator, col]?.Value?.ToString()) 
     { 
      allRangeHasValue=false; 
      break; 
     } 
    } 
    if(!allRangeHasValue) 
    { 
     break; 
    } 
} 

Edit: Sur la base de votre commentaire, vous pouvez faire quelque chose comme: Edit2: Puisque vous utilisez TryParse, vous n'avez pas besoin de nouveau analyser , TryParse renvoie la valeur dans la variable out.

for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++) 
{ 
    int n1; 
    int n2; 
    if (!string.IsNullOrWhiteSpace(s.Cells[rowIterator, 1]?.Value?.ToString()) && 
     !string.IsNullOrWhiteSpace(s.Cells[rowIterator, 2]?.Value?.ToString()) && 
     int.TryParse(s.Cells[rowIterator, 1].Value.ToString(), out n1) && 
     int.TryParse(s.Cells[rowIterator, 2].Value.ToString(), out n2)) 
    { 
     Pss.Pbr = n1; 
     Pss.Amount = n2; 
     Ps.Add(Pss); 

    } 
} 
+0

merci beaucoup –