web-dev-qa-db-ja.com

C#Excel:行数と列数を取得する正しい方法

C#Interop Excelに問題があります。大きなファイルで有効範囲が取得されます

https://www.dropbox.com/s/betci638b1faw8g/Demo%20Training%20Data.xlsx?dl=

これは私のファイルですが、実際のサイズは1000ですが、49998になりました

標準コードを使用しました

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(txtbTrainPath.Text);
Excel.Worksheet xlWorksheet = xlWorkbook.Worksheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;              
xlApp.Visible = true;
xlWorksheet.Columns[5].Delete();
xlWorksheet.Columns[3].Delete();              
rowCount = xlRange.Rows.Count;
colCount = xlRange.Columns.Count;

このファイルのみが正しく機能しない場合、他のファイルは正常に機能します。何が問題なのかを見つけてください。有効なサイズのみのワークシートのサイズを変更する方法。

4
riguang zheng

Excelファイルをダウンロードして確認したところ、予想どおり、49998行C列の書式が見つかりました。フォントが異なり、数値の書式も異なり、フォントの色は赤でした。行49998のすべてのセルを削除しただけで、使用されている範囲行の数が49997に減少しました。最後の行を削除して、どのセルがフォーマットされているかを推測してから、もう一度確認してください。行49998の上にあるすべてのセルに、ある種の異なる書式設定があると感じています。

この1枚のシートを修正して適切な使用範囲を取得するには。 2つの選択肢があります。 1)行1001から始まるWHOLE行を選択し、行49998まで下にスクロールします。Shiftキーを押しながら、WHOLE行49998をクリックします。行1001〜49998を選択した状態で、選択範囲を右クリックし、[削除]を選択します。 、必要に応じて、セルを上にシフトします。または2)データのみのセルをコピーし、セルを新しいワークシートに貼り付け、古いワークシートを削除し、新しいワークシートの名前を以前のワークシート名に変更します。これが理にかなっているといいのですが。

1
JohnG