2016-12-13 10 views
0

空(空白または値を含まない)のセルを削除したい場合があります。私はExcel.Interopを使ってこれをしようとしています。私はこれについてどうやって行くのかが完全にはわかりませんが、私はこれを試しました。excelファイルからusedRange内の空のセルを見つけて削除するC#

 Excel.Application xlApp; 
     Excel.Workbook xlWorkBook; 
     Excel.Worksheet xlWorkSheet; 
     Excel.Range range; 

     string str; 


     xlApp = new Excel.Application(); 
     xlWorkBook = xlApp.Workbooks.Open(@"C:\Users\Craig\Desktop\testCell.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

     range = xlWorkSheet.UsedRange; 

     if ((((Excel.Range)xlWorkSheet.Cells[range]).Value2.ToString() != String.Empty)) 
     { 
      Console.WriteLine("No empty cells found"); 
     } 
     else 
      Console.WriteLine("Found empty cells"); 

実行時間はThe parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))ですが、私のif文ではあります。私の問題に関するアイデアか、これについて正しい方法を考えているのですか?私は私の一時ファイルに行き、それらを削除し、プラス私は私のbinフォルダの内容を削除した

+0

空の行と列を削除するだけでなく、空の単一セルをすべて削除してもよろしいですか?私は単一の空のセルを削除することは、スプレッドシートの構造を台無しにすると思います。 – JohnG

+0

私はライン: '(((Excel.Range)xlWorkSheet.Cells [range])、Value2.ToString()!= String.Empty))'とは思えません。セルの範囲があり、WHOLEの範囲が空の文字列と等しいかどうかを確認しようとしていますか?範囲をループして空のセルを見つける必要があります。 – JohnG

答えて

0

私はあなたのエラーはおそらくラインから来ている推測しています:あなたがどうかを確認するためにチェックされている上

if ((((Excel.Range)xlWorkSheet.Cells[range]).Value2.ToString() != String.Empty)) 

全範囲は空の文字列に等しいか?上記のリンクを削除するために使用される範囲でループをスピードアップすることです

Remove Empty rows and Columns From Excel Files Faster using Interop

:あなたは、単に空の行や列を削除することを意味している場合

、私はこの前に答えている、下記のリンクをご確認ください空の行と列。しかし、空の行と空の列を削除するために、使用範囲の行と列をループする、私の答えが低いセクションがあります。単一の空のセルを削除する場合は、各列をループし、必要に応じて空のセルを削除するようにコードを変更することができます。お役に立てれば。

関連する問題