Java ServletsでExcelファイルを生成するためにApache POIを使用しています。
getExcel()
関数はHSSFWorkbook
、クライアントに送信したい を返します。
HSSFWorkbook wb = getExcel();
これは私がこれまでに試したことです。
//block1
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
wb.write(outByteStream);
byte [] outArray = outByteStream.toByteArray();
response.setContentType("application/ms-excel");
response.setContentLength(outArray.length);
response.setHeader("Expires:", "0");
response.setHeader("Content-Disposition", "attachment; filename=Demo1.xls");
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
//block2
request.setAttribute("Message", str1);
request.setAttribute("MessageDetails", str2);
request.getRequestDispatcher("/MyFile.jsp").forward(request, response);
上記のコードはExcelファイルをクライアントに送信しますが、例外が発生します:
java.lang.IllegalStateException: Cannot forward after response has been committed
block1
上記のコードからorを削除してもエラーは発生しませんが、オブジェクトに追加したクライアントと 2 つの属性をblock2
送信したいと考えています。Excel file
request
Excel
を使用してクライアントにファイルを送信できますrequest.getRequestDispatcher
か?または、これを行うためのより良い方法はありますか?
任意の提案をいただければ幸いです。
Edit1
を取得している理由はわかっていますIllegalStateException
が、私の質問は、クライアントExcelFile
にRequest Attributes
両方を送信する方法です。
Edit2と の両方をクライアント
に送信したい理由は、から送信されたメッセージを表示する があるためです。Excel file
Attributes
MyFile.jsp
<div>
servlet
<div style="background-color: aliceblue">
<h3>${Message}</h3>
</div>
Edit3
クライアントにメッセージを送信する理由は、クライアントがデータベースにデータを挿入するために提供するExcel file
応答としてこれを送信し、重複またはその他の理由で挿入できないものを強調表示しているためです。したがって、クライアントにインポート統計を表示し、エラー行が強調表示された Excel ファイルのコピーを彼に渡したいと思います。Import Excel operation
excel file
excel rows
Message