JAva poiは複数のsheetを生成する


私のニーズは、1つのテーブルに複数のsheetを生成し、各sheetの名前を動的に指定し、各sheet内のコンテンツを動的に指定することです.生成されたファイル名は動的に指定されます.
ツールクラス:
package test;

import java.io.OutputStream;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

public class ExportExcelUtils {

	/**
	 * @Title: exportExcel
	 * @Description:   Excel   
	 * @author: evan @ 2014-01-09 
	 * @param workbook 
	 * @param sheetNum (sheet   ,0            sheet)
	 * @param sheetTitle  (sheet   )
	 * @param headers    (     )
	 * @param result   (     )
	 * @param out  (   )
	 * @throws Exception
	 */
	public void exportExcel(HSSFWorkbook workbook, int sheetNum,
			String sheetTitle, String[] headers, List> result,
			OutputStream out) throws Exception {
		//       
		HSSFSheet sheet = workbook.createSheet();
		workbook.setSheetName(sheetNum, sheetTitle,
				HSSFWorkbook.ENCODING_UTF_16);
		//           20   
		sheet.setDefaultColumnWidth((short) 20);
		//       
		HSSFCellStyle style = workbook.createCellStyle();
		//       
		style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
		style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		style.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		//       
		HSSFFont font = workbook.createFont();
		font.setColor(HSSFColor.BLACK.index);
		font.setFontHeightInPoints((short) 12);
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
		//            
		style.setFont(font);

		//                  
		style.setWrapText(true);

		//        
		HSSFRow row = sheet.createRow(0);
		for (int i = 0; i < headers.length; i++) {
			HSSFCell cell = row.createCell((short) i);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellStyle(style);
			HSSFRichTextString text = new HSSFRichTextString(headers[i]);
			cell.setCellValue(text.toString());
		}
		//       ,     
		if (result != null) {
			int index = 1;
			for (List m : result) {
				row = sheet.createRow(index);
				int cellIndex = 0;
				for (String str : m) {
					HSSFCell cell = row.createCell((short) cellIndex);
					cell.setEncoding(HSSFCell.ENCODING_UTF_16);
					cell.setCellValue(str.toString());
					cellIndex++;
				}
				index++;
			}
		}
	}
}

テストデータ:(さらにDディスクの下でtest.xlsファイルを生成し、複数のsheetがある)
package test;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class PoiTest {

	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		try {
			OutputStream out = new FileOutputStream("D:\\test.xls");
			List> data = new ArrayList>();
			for (int i = 1; i < 5; i++) {
				List rowData = new ArrayList();
				rowData.add(String.valueOf(i));
				rowData.add("    ");
				data.add(rowData);
			}
			String[] headers = { "ID", "   " };
			ExportExcelUtils eeu = new ExportExcelUtils();
			HSSFWorkbook workbook = new HSSFWorkbook();
			eeu.exportExcel(workbook, 0, "  ", headers, data, out);
			eeu.exportExcel(workbook, 1, "  ", headers, data, out);
			eeu.exportExcel(workbook, 2, "  ", headers, data, out);
			//              ,        。
			workbook.write(out);
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

同じニーズがあれば、これを見ることができます.あなたが望むレポートのフォーマットを設計できるに違いありません.