当前位置: 首页 > 工具软件 > XSSF > 使用案例 >

java xssf生成_通过poi的XSSF实现生成excel文件

郑承恩
2023-12-01

importjava.io.File;importjava.io.FileOutputStream;importjava.util.ArrayList;importjava.util.List;importorg.apache.poi.hssf.util.HSSFColor;importorg.apache.poi.ss.usermodel.CellStyle;importorg.apache.poi.ss.usermodel.Font;importorg.apache.poi.ss.usermodel.IndexedColors;importorg.apache.poi.xssf.usermodel.XSSFCell;importorg.apache.poi.xssf.usermodel.XSSFCellStyle;importorg.apache.poi.xssf.usermodel.XSSFFont;importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;public classDemo {public static voidmain(String[] args) {//文件内容

List rows = new ArrayList();

rows.add(new String[] { "编号", "姓名", "成绩"});

rows.add(new Object[] { 1001, "张三", 87.5F});

rows.add(new Object[] { 1002, "李四", 99.5F});

rows.add(new Object[] { 1003, "王五", null});

rows.add(new Object[] { 1004, "小六", 59F });//文件路径

String folderPath = "E:\\tmp";//文件名称

String fileName = "学生分数";//生成文件

newDemo().createExcelFile(rows, folderPath, fileName);

}/*** 根据[文件内容&文件路径&文件名称],生成一个excel文件*/

private void createExcelFile(Listrows, String folderPath, String fileName) {try{//创建一个Workbook

XSSFWorkbook wb = newXSSFWorkbook();//创建一个Sheet

XSSFSheet sheet =wb.createSheet(fileName);//样式1:设置列宽

sheet.setColumnWidth(0, 2000); //第一列的宽度为2000

sheet.setColumnWidth(1, 3000); //第二列的宽度为3000//样式1:设置单元格背景

CellStyle titleStyle =wb.createCellStyle();

titleStyle.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex());

titleStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);//样式1:设置单元格边框

titleStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); //下边框

titleStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);//左边框

titleStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);//上边框

titleStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);//右边框//样式1:设置单元格字体

Font font =wb.createFont();//font.setColor((short) 42);//设置字体颜色

font.setColor(HSSFColor.GREEN.index); //XSSFColor中未找到颜色和short数值的映射,使用HSSFColor来定位颜色的short值

font.setFontName("黑体"); //设置字体

font.setFontHeightInPoints((short) 12);//设置字体大小

font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体显示

titleStyle.setFont(font);//样式1:设置单元格居中

titleStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);//样式2:设置单元格居中

CellStyle contentStyle =wb.createCellStyle();

contentStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);//遍历输出每行

for (int i = 0; i < rows.size(); i++) {//创建一个row

XSSFRow row =sheet.createRow(i);//每一行的数据

Object[] rowData =rows.get(i);//遍历生成每个单元格

for (int j = 0; j < rowData.length; j++) {//创建一个cell

XSSFCell cell =row.createCell(j);//样式:设置单元格样式

if (i == 0) {

cell.setCellStyle(titleStyle);//使用样式1

} else{

cell.setCellStyle(contentStyle);//使用样式2

}//如果为空,就不做设值处理

if (null ==rowData[j]) {continue;

}//设值处理:假设只有四种类型的数据,如果还有其他类型,根据需要,做格式转换//String类型数值

if (rowData[j].getClass() == String.class) {

cell.setCellValue((String) rowData[j]);

}//double类型数值

else if (rowData[j].getClass() == double.class || rowData[j].getClass() == Double.class) {

cell.setCellValue((Double) rowData[j]);

}//float类型数值

else if (rowData[j].getClass() == float.class || rowData[j].getClass() == Float.class) {

cell.setCellValue((Float) rowData[j]);

}//integer类型数值

else if (rowData[j].getClass() == int.class || rowData[j].getClass() == Integer.class) {

cell.setCellValue((Integer) rowData[j]);

}

}

}//文件路径

String filePath = folderPath + File.separator + fileName + ".xls";//含文件名的全路径,如果是2007及以后的版本,后缀可用.xlsx,向前兼容

File file = newFile(filePath);//如果父目录不存在,创建父目录

if (!file.getParentFile().exists()) {

file.getParentFile().mkdirs();

}//如果已存在,删除旧文件

if(file.exists()) {

file.delete();

}//将excel内容写入到文件当中

file.createNewFile();

FileOutputStream fileOut= newFileOutputStream(file);

wb.write(fileOut);

fileOut.close();

}catch(Exception e) {

e.printStackTrace();

}

}

}

 类似资料: