/**
* 创建ExcelFile文件流
* @param sheetNameArray 每个sheet页的名字
* @param titles 每个sheet页的表头
* @param cellValue 每行数据在map中的字段, 一定要和titles严格对应(如果list无数据, 则可以不传)
* @param objects[] { List<Map<String, Object>> } 每个sheet页的数据
* @return 文件流
*/
@SuppressWarnings({ "deprecation", "resource" })
public void createExcelFileInputStream(String[] sheetNameArray,
String[][] titles, String[][] cellValue, Object[] objects,
OutputStream os) {
// 第一步,创建一个workbook,对应一个Excel文件
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet xssfSheet = null;
for( int index = 0; index < sheetNameArray.length; index++ )
{
String sheetName = sheetNameArray[index];
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
xssfSheet = workbook.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
XSSFRow xssfRow = xssfSheet.createRow(0);
// 第四步,设置表头样式和表头居中
XSSFCellStyle xssfCellStyle = workbook.createCellStyle();
//居中样式
xssfCellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
xssfCellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直
xssfCellStyle.setFillForegroundColor(HSSFColor.CORNFLOWER_BLUE.index);// 设置背景色
xssfCellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
XSSFFont font = workbook.createFont();
font.setFontName("仿宋_GB2312");
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 粗体显示
font.setFontHeightInPoints((short) 12); // 字体大小
xssfCellStyle.setFont(font);
// 第五步 创建单元格, 并将表头写入
if(titles != null && titles.length != index)
{
int len = titles[index].length;
XSSFCell hssfCell;
for(int i = 0; i < len; i++)
{
hssfCell = xssfRow.createCell(i);
hssfCell.setCellValue(titles[index][i]);//列名2
hssfCell.setCellStyle(xssfCellStyle);
}
// 第六步,写入实体数据
if(objects != null && objects.length != index
&& objects[index] != null)
{
List<Map<String, Object>> list = (List<Map<String, Object>>)objects[index];
if( (len = list.size()) > 0 )
{
for (int i = 0; i < len; i++)
{
xssfRow = xssfSheet.createRow(i+1);
// 第七步,创建行、单元格,并设置值
Map<String, Object> map = new HashMap<String, Object>(list.get(i));
for(int j = 0; j < cellValue[index].length; j++){
xssfRow.createCell(j).setCellValue(MapUtils.getString(map, cellValue[index][j]));
}
}
}
}
}
}
// 第八步,将文件存到指定位置
try {
workbook.write(os);
os.close();
} catch (Exception e) {
logger.error("createExcelFileInputStream is error, msg is : " + e.toString());
}
}
POI 导出Excel文档
最新推荐文章于 2024-06-17 16:42:03 发布