2012-01-24 22 views
0

ms sqlテーブルへの接続からデータを取得するExcelファイルを作成する必要があります。現時点では、データをxmlにエクスポートしています(mvc 3ページを使用)。これをExcelにする方法はhttp://xignite.web-services-blog.com/2011/03/how-to-import-market-data-into-excel-using-xml/です。SQL Serverまたはasp.net/C#(mvc 3)ページからExcelにデータをインポートする

データをExcelファイルに簡単に生成したいのではなく、いつでも新鮮なデータをExcelで読み込むことができます。私の問題は、最大100 000行がある可能性があり、excelはXMLファイルをこのように解析することで実際に遅く、数分間CPUコア全体をロックします。それを使用することは不可能です。

これを達成するための最適化方法はありますか?私はms SQLから直接データを取得しようとすることができますが、ユーザーがテーブル全体を読むことができないようにしたい - 彼は "彼"の行だけを読むことができるはずです。だから私は現在xmlを使用しています - 私は彼のログインをリンクに含めることができ、次に彼がアクセスできる行だけを返すことができます。私に彼にms SQLへのアクセス権を与えるならば、私はクライアントごとに別々のログインとビューを作成しなければならないでしょう。それは自動化するのが苦痛です...さらに、どれくらい速くなるのでしょうか?

不明な点をご説明いただきありがとうございます。私はこのデータをExcelにインポートする方法が何であるか正確には分かりません。

答えて

0

既にWebサーバーを使用してXMLファイルを生成している場合は、データベースからその場でCSVファイルを生成することを検討してください。ユーザーはこのCSVファイルからデータをインポートできます。これは、次のように動作します:

  1. ユーザーは自分のスプレッドシートを開き、更新をクリックします。
  2. ユーザーのExcelは、URL、たとえばhttp://intranet/report.csv?username=Bobに接続します。
  3. WebサーバーはSQLサーバーに接続し、クエリを実行します。
  4. WebサーバーはMemoryStream msオブジェクトを作成します。
  5. WebサーバーはDataReaderまたはSqlDataReaderを使用してクエリ結果を読み取り、CSV形式(コンマ区切りの値)でmsに書き込みます。
  6. WebサーバーはContent-disposition: attachment; filename=report.csvヘッダーで応答し、Response.BinaryWrite()を使用してユーザーにCSVを送信します。
  7. ユーザーのExcelはreport.csvを受信し、ユーザーのスプレッドシートの内容を更新します。
関連する問題