0

レスポンデントユニット構造のツリーがあります。回答者がユニットに所属する場所。銀行に 2 つの部門があると仮定すると、次のようになります。

  + Accountants
     - Homer Simpson
     - Bart Simpson
     - Leny
  + It department 
     - Charles Bartowski
     - Sarah Walker
     - Bill

会計士と IT は部門であり、その中の回答者です。それぞれrespondentに一般的なプロパティがあります。

 - Email
 - Language
 - Name
 - DepartmentID

各部門は、すべての回答者に独自の動的プロパティを提供できます。

 - Salary
 - Respondent age
 - Gender

このプロパティは、実行時に追加および削除できます。それらはテーブルとして保存されます

プロパティ:

- Property name
- Property ID

プロパティ値:

 - PropertyValueID
 - PropertyID
 - Value

それらをファイルにエクスポートする可能性を実行する必要がありExcel、ユーザーはこのExcelでsmthを編集でき、サーバーにアップロードするとデータベースを更新する必要があります。

Excelでエクスポートしました。現在、アップロードを許可するための適切なアプローチを探しています。効率的な方法でそれを行うための記事やパターンはありますか?

前もって感謝します)

Excel での作業に ASP.NET と EPPlus を使用しています。

4

1 に答える 1

0

これを行わないことを強くお勧めします。=)

データベースは一貫性があり、特定のルールとロジックに従っているため、Excel へのエクスポートは簡単です。

ユーザーに Excel ファイルの変更とアップロードを許可し、それを解析してデータベースを更新しようとすると、頭の痛い問題が発生します。

これを行う方法を次に示します。

  1. まず、ファイルをアップロードさせます。そのために何を使用しているのかわかりませんが、それは明らかな始まりです。
  2. 次に、Excel ファイルをデータベースにインポートするジョブを作成します。SQL Server の場合、例として SSIS ジョブを使用してインポートします。目標は、データベースの一時テーブルに取り込むことです。
  3. 一時テーブル (最近インポートした Excel データ) から読み取るコードを記述し、検証を行います。フィールド名が正しいこと、データ型が正しいことなどを検証します。
  4. 一時テーブルからマスター テーブルにデータをインポートするコードを記述します。これは、インポートされたファイルが適切であることをプログラムで確認した後でのみ行います。
  5. 可能な限り Excel をロックダウンしてください。ユーザーがデータ入力テンプレートを変更できないように、シートをロックします。間違った値を使用しないように、Excel で検証を行うようにしてください。(たとえば、列挙型がある場合は、自由形式のテキストを入れるのではなく、列挙型に固執するようにしてください。)

このアプローチの本当の問題は、ユーザーが頭がおかしくなり、テンプレートやガイドラインに従わないことです。不適切なインポートのデバッグに多くの時間を費やすことが予想されます。

データを追加/編集できるようにするための単純な Web アプリケーションを作成するオプションはありませんか? そうすれば、彼らの入力をより細かく制御できます。Excel は潜在的に彼らに過剰な力を与えます。

(この場合も、Excel で VBA を使用してフォームを作成し、入力を制限することができます。)

于 2013-01-15T18:59:23.173 に答える