2011-08-08 5 views
4

第三者コンポーネントを使用してデータをエクスポートした後、Excelシートのデータが正しく入力されません。 Excelは数字が文字列であり、小さな緑色の三角形が表示されているものの、文字列であると考えています。Excelデータエクスポート番号エラーの修正/緑色の三角形の削除

我々はこの問題を解決するには、以下のコード化されました:

For Each objCell As Microsoft.Office.Interop.Excel.Range In objWorkSheetReport.Range(objWorkSheetReport.Cells(1, 1), objWorkSheetReport.Cells(Me.RowCount + 10, Columns.Count + 10)).Cells 
    If IsNumeric(objCell.Value) Then 
     objCell.Value = CDbl(objCell.Value) 
    End If 
Next 

これは、すべてのそれらの小さな緑の三角形が削除されますが本当に遅いです。

質問

は緑の三角形が表示されませんので、迅速にデータの範囲を変換するより高速な方法はありますか?

答えて

4

範囲の.SpecialCells()メソッドを使用して、変更が必要なセルだけに絞り込みます。

範囲NarrowedRangeと仮定すると、ワークシートSheetA1:A8用に独自の範囲を置き換え、そしてあなたのシートのためのobjWorksheetReport

NarrowedRange = 
    Sheet.Range("A1:A8").SpecialCells(Excel.XlCellType.xlCellTypeConstants, 
             Excel.XlSpecialCellsValue.xlTextValues) 

があなたの元範囲のテキストのみ値要素を取得し、これだけのものに変更しますそれに応じて。

+0

これはまだまだ遅い操作です。それをスピードアップする方法はありませんか? – CodingBarfield

+1

@コーディング操作をしているときにシートを開いていますか?バックグラウンドでエンジンを動作させるだけなら、スピードアップします。開いておく必要がある場合は、[ScreenUpdating](http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._application.screenupdating(v = office.11​​).aspx)をオフにします。 。何行ありますか?私は「SpecialCells」がそれを少し速くすると思ったので、それはより良い演奏をしたかったと思う。それ以外はすべて失敗し、これらのタイプの操作を最適化するための[Programmer's](http://programmers.stackexchange.com)に関する質問を設定します。 – jonsca

関連する問題