2010-12-27 12 views
0

私は自分のExcelシートをアップロードできるWebアプリケーション(ASP.NET 3.5)を用意しています。このシートには、SQL Server 2005に挿入する必要がある項目に関する情報が含まれています。Excel 2007シートからSQL Server 2005にデータを高速にエクスポートする

この機能は既に使用していますが、非常に遅いです(要求を完了するまでには20分ほどかかります)。この問題を処理するにはより良い方法が必要です。

シートには、アイテムに関する情報が含まれています。これらのプロパティは、たとえば複数のテーブル(ブック、著者、タイトルなど)に挿入されます。私は現在やっている何を

は以下の通りです:

  1. ユーザーは、アプリケーションが
  2. が各行を読み取り、それに応じてデータベースを更新し、ファイルを開く
  3. ファイルをアップロードします。

私はMicrosoft.Office.Interop.Excel

Editを使用しています:私はシートあたり10.000+行で働いています。

+0

SQL Server Integration Servicesの使用について考えましたか? – RobS

+0

私はインターネット上で解決策を探していたのですが、現時点では私のリーグを超えています。しかし、私はこれを念頭に置いておきます。 – Ali

+0

私はCells(int、int)がRangeよりはるかに優れていることを知っています。また、「再計算」を無効にしてみてください。 interopより速いいくつかのExcelライブラリがあります。 – turtlepick

答えて

0

SqlBulkCopyクラスを使用できます。

+0

ありがとう、私はそれをチェックします。 – Ali

0

Microsoft Jet Database Engineを使用してスプレッドシートをデータテーブルに変換し、データベースに一括挿入する方法について説明します。

thisをチェックしてください。

Excel 2007ファイルを処理する場合は、別のプロバイダを使用する必要があります。

0

EXCELファイルをopenrowsetというSQLサーバーで直接開こうとしましたか?

+0

私はExcel> 2007を使用しています。ジェットエンジンは動作していないと思います。そのため、Interop.Excelを使用しています。 – Ali

+0

Googleを試してみましたか?それはExcel 2007でもうまく動作しているようです.OleDBコネクタ – adopilot

+0

97-2003形式でExcelファイルを保存しようとしましたが、OpenRowSetを使用しましたか? – NeverHopeless

0

私の経験から、Excelスプレッドシートをinteropで読み書きすることは糖蜜よりも遅いです。私はあなたがどのくらいの量のデータを扱っているかに時間がかかっていることに驚くことはありません。

Excelインスタンスの作成を回避するには、スプレッドシートと直接対話してみてください。あなたはおそらく、改善の要素を気付くでしょう - あなたは数秒で完了するかもしれません。 2007/2010の.xlsxファイルを使用している場合は、前もってEPPlusを使用しています。あなたが古い.xlsファイルを受け入れるならば、thisは良いスタートのように見えますが、これまでに使ったことはありません。

あなたのアプリケーションを最初にプロファイルして、これがトラブルの現場であるかどうかを判断してください。私はそうだと思っていますが、SQLの挿入物などである可能性があります。

+0

あなたの提案をありがとう、私は現在EPPlusを見ていて、私が探しているもののように見えます。 – Ali

関連する問題