Interop Excel UsedRange Lignes Compter incorrect

Je suis en train de lire une feuille de calcul excel dans la mémoire, mais lorsque j'utilise la feuille de calcul.UsedRange.Les lignes.Le comte, la valeur de retour est incorrect. J'ai 1670 lignes de données dans ma feuille de calcul, mais le nombre de lignes ramène 694 lignes.

var excelApp = new Microsoft.Office.Interop.Excel.Application {Visible = false};
var workbook = excelApp.Workbooks.Open(_mirrorFileName,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing);

var worksheet = (Worksheet)workbook.Worksheets[1];
var excelRange = worksheet.UsedRange;            
var valueArray = (object[,])excelRange.Value[XlRangeValueDataType.xlRangeValueDefault];

var rowCount = worksheet.UsedRange.Rows.Count;

Dois-je utiliser UsedRange pour trouver le nombre de lignes ou est-il une autre méthode???

Je ne voit comment UsedRange.Rows.Count pouvez retourner moindre nombre de lignes que ce qui est présent. Si je mets une valeur dans la cellule A1 & une autre valeur dans la cellule A1048576, UsedRange.Rows.Count retourne 1048576.
Essayé de reproduire le problème, mais UsedRange.Rows.Count toujours retourné le nombre de lignes. Il semble, d'après la docs, vous pouvez obtenir un nombre qui est plus grand que le nombre de lignes avec des valeurs en eux, mais je ne pense pas que vous pourriez obtenir un plus petit nombre: "Un objet Range qui représente toutes les cellules qui contient une valeur de à tout moment." (mon emphase)
changement var valueArray = (object[,])excelRange.Valeur[XlRangeValueDataType.xlRangeValueDefault]; par var valueArray = (object[,])excelRange.Valeur;

OriginalL'auteur wakthar | 2014-06-17