2016-08-29 101 views
0

asp/MVCを使用すると、アプリケーションは特定の列に埋め込まれたデータに基づいてExcelの.xlsxファイルを生成し、うまく動作します。ClosedXMLでは、ワークシートを列で並べ替える方法は?

しかし、目標は同じ列を使用して、追加のワークシートを提供することであるが、ソートなどコラム「J」

var wb = new XLWorkbook(); 
    var ws = wb.Worksheets.Add("Proj Info"); 
    var ws2 = wb.Worksheets.Add("Sort By Dates"); 

など、特定のcolums、ワークシートWSに変数または式で埋め値、データを持っています正しいですが、列に並べ替えることはできません。

ws.AutoFilter.Column("J"); //no, nothing changes 
    ws.Column("J").Sort(); -> this shifts all the columns up but does not sort 
    ws.Column("J").Sort(XLSortOrder.Ascending); ->same, doesnt sort only shifts 

更新:ws.Sort(9);並べ替えで機能しましたが、問題は列10に数式があり、その列を並べ替える必要があることです。

ws.Cell("J" + c).FormulaR1C1 = "=C$2-F" + c; 

これはこれですか?それは並べ替えられません。 ws.Sort(10);セルに最終的な値が含まれているときに機能しますが、式が得られたときは機能しますか?各セルに数式を実装した後、Excelページを強制的に並べ替えるための回避策はありますか?

答えて

1

あなたがテーブルのソートされていないが、列J.の値

これを試してください:

ws.Sort("Column10"); 
+0

は、として書かなければならなかった:ws.Sort(10)。 ws.Sort( "Column10")のためです。エラーが発生しました:有効な値1 - 65536を入力する必要がありますか?しかし、私が他のコラムでこれを使うと、うまくいきます! ws.Sort(11)はその列でソートされます。列10では機能しませんが、違いはCol 10が数式から値を取得する点だけです。 Col 10の各セルには「= C $ 4-E6」(またはE7、E8など)があります。 –

+0

数式をソートすることは意味がありません.Excel式はClosedXmlで実行されないためです。あなたができることは...結果を計算して列に書き出し、その結果を並べ替えてから削除します。しかし、この場合は、単に列5( 'E')でソートすることができます。 – Xiaoy312

+0

今はすべてのワークシートが列Aでソートされているので、何かが奇妙で、うまくいきました。ws2.Sort(3);列 "C"を並べ替えます。もはや列 "A"を並べ替えません。しかし、それは働いていた。すべての数式を取り出して、コントローラ内の計算部分を実行し、変数を入力するだけです。ソートがなぜ機能するのか、その後は動作しないのですか? –

関連する問題