3

Java ベースの Web アプリケーションには、ユーザーが Web アプリケーションから Excel シート テンプレートをダウンロードできる機能があります。このテンプレートにデータを入力し、同じ Excel シートをアップロードします。

次に、システムはこの Excel ファイルを読み取り、このデータをデータベースに保存します。

以下は、いくつかのサンプル データを含むテンプレート ファイルのスナップショットです。

私が欲しいのは、ユーザーがテンプレート ファイルをダウンロードするときです (テンプレート ファイルには通常、ヘッダーだけが含まれているため、ユーザーはどのデータがどの列に入るかわかります)、Excel シートには部門、製品、二次製品、地域、および国のドロップダウンが必要です。ユーザーがこれらの列に無効な値を入力しないようにします。

また、製品は部門によって異なり、二次製品は製品によって異なります。従属ドロップダウンに似ています。

基本的には、Apache POI を使用して Excel シートを作成する必要があります。このシートでは、ユーザーは自分で値を入力する代わりに、ドロップダウンから値を選択します。

ユーザーが入力した値が有効かどうかを確認するサーバー側の検証がありますが。

これを行う理由は、たとえば、一部のユーザーは国を US、一部は USA、一部は United States として入力する可能性があるためです。

製品などについても同じことが言えます。ユーザーは製品を GFFX または GFFX Structuring または gffx などとして入力できます。

POIを使用してExcelシートでこれを行うことは可能ですか? そうでない場合、他の可能な解決策は何ですか、またはユーザーが各列に何を入力する必要があるかを確実に理解するのに役立ちましたか?

編集1:

ドロップダウンを作成できましたが、従属ドロップダウンを作成することは可能ですか?

ここに画像の説明を入力

4

2 に答える 2

7

私は AurA の解決策を提案しようとしていましたが、実際には実行時に検証リストを作成する必要があるようです。

POI Quick Guideをご覧ください。まさに必要なものが揃っているようです。

hssf.usermodel (バイナリ .xls 形式)

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Data Validation");
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(new String[]{"10", "20", "30"});
DataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);
sheet.addValidationData(dataValidation);

xssf.usermodel (.xlsx 形式)

XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Data Validation");
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint)
dvHelper.createExplicitListConstraint(new String[]{"11", "21", "31"});
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
XSSFDataValidation validation = (XSSFDataValidation)dvHelper.createValidation(
dvConstraint, addressList);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
于 2012-06-20T08:14:00.607 に答える
0

ユーザーに表示され、入力する必要がある最初の行の上の行に(POIを使用して)提案を追加した場合(したがって、ヘッダーの下の行には提案と隠されています)。

POIまたは純粋なExcel(VBAなし)ドロップダウンリスト(以前に入力した値に基づいて提案を保持する)で(AFAIK)カテゴリの依存関係を取得することはできません。

できることは、POIを使用してヘルパーシートに適切な生データを入力し、VBAを使用してリストから値を選択できるドロップダウンを動的に生成することです。

于 2012-06-20T06:30:12.733 に答える