0
2枚のExcelブックを作成する必要があります。私は次のコードを使用してExcelを作成し、後でダウンロードします。ただし、最初のシートは作成されますが、2枚目のシートは作成されていません。私は正確な理由を理解することができません。以下は、2枚のシートを作成するための部分です。SXSSFWorkbookを使用して複数のシートを含むExcelブックを作成する
import java.io.OutputStream;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
private static final String SECOND_SHEET_NAME = "Sheet 2";
private static final String FIRST_SHEET_NAME = "Sheet 1"
protected Sheet firstSheet;
protected Sheet secondSheet;
protected Workbook outWorkbook;
//creating workbook
outWorkbook = new SXSSFWorkbook(1);
//create first sheet
firstSheet = outWorkbook.createSheet(FIRST_SHEET_NAME);
//create second sheet
secondSheet = outWorkbook.createSheet(SECOND_SHEET_NAME);
//setting the second sheet as unhidden
outWorkbook.setSheetHidden(outWorkbook.getSheetIndex(SECOND_SHEET_NAME), false);
try
{
outWorkbook.write(outputStream);
}
catch(IOException)
{
String errorMsg = "Failed to write to workbook";
log.error(errorMsg, e);
}
問題が再現できません。しかし、あなたは 'OutputStream'をどこかで閉じなければなりません。執筆後に 'SXSSFWorkbook'を処分する必要があります。https://poi.apache.org/spreadsheet/how-to.html#sxssf –
@AxelRichter私はoutputStreamを閉じます。あなたのSXSSFWorkbookを処分することはどういう意味ですか? – Ashley
'((SXSSFWorkbook)outWorkbook).dispose();'前のコメント内のリンクを参照してください。 –