3

私の現在の要件の1つは、ユーザーが週に1回程度更新するExcelスプレッドシートを取り込んで、そのドキュメントで特定のフィールドを照会できるようにすることです。

今のところ、すべてのExcel(2007)データを実行してxmlファイルにプッシュし(ファイルをアップロードするときに1回だけ、次にxmlを使用します)、必要なすべてのデータ(すべてではない)を保持します。スプレッドシートの列)Linq-to-XMLを介したクエリ用。xmlファイルはExcelよりも小さいことに注意してください。

ここで私の質問は、Linqを使用したXMLファイルのクエリとOledbConnectionを使用したExcelファイルのクエリの間にパフォーマンスの違いはありますか?別の不要なステップを追加するだけですか?フォローアップの質問は、xmlにプッシュし続けるのが使いやすさのために価値があるかどうかだと思います。

ファイルには約1000行あります。

4

4 に答える 4

4

1 週間に 1 回だけ行うものについては、最適化を行う必要はないと思います。代わりに、あなたと将来ソリューションを保守する人にとって、何が保守可能で理解しやすいかに焦点を当てる必要があります。

最も自然なソリューションを使用してください:-)

于 2009-02-06T14:20:00.947 に答える
2

私が理解しているように、Excelデータにアクセスするためのパフォーマンス面はこのようになっています。

最速から低速へ
1. Excel ファイル タイプで C++ を直接使用するカスタム サード パーティ ベンダー ソフトウェア。
2. データ型に必要な場合にスキーマ ファイルを使用する OleDbConnection メソッドは、Excel をフラットファイル データベースとして扱います。
3. Excel 2007 ファイル形式のみでデータを読み書きするための Linq 2 XML メソッドの優れたメソッド。
4. OOXML SDK およびオプションでサードパーティの xml ライブラリを使用した、XML データの直接操作。ここでも Excel 2007 ファイル形式のみに制限されています。
5. Object[,] 配列を使用してセルの領域を読み取り (.Value2 prop を使用)、Object[,] 配列を再びセルの領域に渡し (再び .Value2 prop)、データを書き込みます。
6. .Cells(x,y) および .Offset(x,y) prop アクセサーを使用してセルを個別に更新および読み取る。

于 2010-12-21T05:01:46.327 に答える
1

ファイルに対してどのような種類のクエリを実行しているかについて話し合うことが重要だと思います。何よりも経験から話していますが、LINQ を使用すると、oledbconnection よりもクエリを実行する方がはるかに簡単であると信じなければなりません。

于 2009-02-06T14:11:32.387 に答える
1

SqlConnection を使用して Excel スプレッドシートにアクセスすることはできません。ほとんどの場合、OleDbConnection または OdbcConnection を使用しています。

そうは言っても、データをネイティブに処理しているので、OleDbConnection を使用して Excel シートにアクセスする方が高速になると思いますが、使用しているデータを知る唯一の方法は、Stopwatch クラスを使用して自分でテストすることです。 System.Diagnostics 名前空間で、またはプロファイリング ツールを使用して。

処理するデータが大量にある場合は、それを SQL Server に配置してからクエリを実行することも検討してください (もちろん、クエリとデータの保存にかかる時間の比率によって異なります)。

于 2009-02-05T01:13:57.027 に答える