J'ai une application C# qui exploite Interop.Excel (v15) pour ouvrir quelques classeurs de données client, les analyser et afficher des informations. Le problème que j'ai est que certaines des cellules du classeur ont une valeur de # N/A; qui en Excel parle est un CVErr indiquant qu'un certain type d'erreur existe. Dans le contexte de nos données clients, ils utilisent # N/A pour indiquer Non Applicable - il n'y a pas de problème de formule sous-jacente, c'est simplement la valeur qu'ils utilisent.C# Interop.Excel '# N/A' Cell Valeur convertie en -2146826246
Lorsque j'utilise les fonctions ci-dessous pour parcourir les lignes de feuille de calcul, je reçois une valeur Int de -2146826246 à chaque fois que je tombe sur un # N/A:
private void traverseRows(Excel._Worksheet worksheet)
{
//Get the used Range
Excel.Range usedRange = worksheet.UsedRange;
//Last Row/Column
int lastUsedRow = usedRange.Row + usedRange.Rows.Count - 1;
int lastUsedColumn = usedRange.Column + usedRange.Rows.Columns.Count;
foreach (Excel.Range row in usedRange.Rows)
{
List<String> rowData = rangeToList(row);
}
}
List<string> rangeToList(Microsoft.Office.Interop.Excel.Range inputRng)
{
object[,] cellValues = (object[,])inputRng.Value2;
List<string> lst = cellValues.Cast<object>().ToList().ConvertAll(x => Convert.ToString(x));
return lst;
}
J'ai essayé d'examiner chaque cellule individuellement mais qui a ralenti l'application à l'endroit où elle était inutilisable (la plupart des classeurs ont 10 000 lignes X 38 colonnes). J'ai essayé de convertir en texte, valeur, & Value2 en vain. Je dois être capable de lire les valeurs # N/A dans leur forme réelle afin que je puisse exécuter des comparaisons et ensuite afficher la valeur dans un autre classeur. Quel est le meilleur moyen d'y parvenir?
Au lieu de convertir en chaîne, utilisez @ verabtim pour l'obtenir comme littéral. –
@SivaprasathV Où puis-je utiliser @ verbatim? Les valeurs proviennent d'un objet COM Row, même sous cette forme, elles ont la valeur -214682646 – slashNburn