import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.FileOutputStream;
/**
* Created by hgc on 2017/8/18.
*/
public class POIExport {
public static void main(String[] args) throws Exception{
HSSFWorkbook workbook = new HSSFWorkbook();//创建HSSFWorkbook对象(excel的文档对象)
/**
* 单元格样式
* 设置单元格的填充方式,以及前景颜色和背景颜色时需要注意三点:
* 1.如果需要前景颜色或背景颜色,一定要指定填充方式,两者顺序无所谓;
* 2.如果同时存在前景颜色和背景颜色,前景颜色的设置要写在前面;
* 3.前景颜色不是字体颜色。
*/
CellStyle cellStyle = workbook.createCellStyle();//创建CellStyle对象(excel的样式对象)
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置单元格左右对齐方式为居中对齐
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置单元格上下对齐方式为居中对齐
cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS);//设置填充方式(填充图案)
cellStyle.setFillForegroundColor(HSSFColor.RED.index);//设置前景色
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);//设置背景颜色
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);// 设置单元格底部的边框及其样式和颜色
cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);// 这里仅设置了底边边框,左边框、右边框和顶边框同理可设
/**
* 设置字体
*/
HSSFFont fontStyle = workbook.createFont();
fontStyle.setFontName("宋体");//设置字体样式
fontStyle.setFontHeightInPoints((short)20); //设置字体高度
fontStyle.setColor(HSSFColor.BLUE.index);//设置字体颜色为蓝色
fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//设置粗体
fontStyle.setItalic(true);//设置斜体
fontStyle.setUnderline(HSSFFont.U_SINGLE);//设置下划线
cellStyle.setFont(fontStyle);// 将字体对象赋值给单元格样式对象
/**
* 单元格创建和赋值
*/
HSSFSheet sheet = workbook.createSheet("成绩单");//建立新的sheet对象(excel的表单)
HSSFRow row1 = sheet.createRow(0);//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
sheet.setDefaultRowHeightInPoints(20);//需要在创建行之前设置缺省列高,否则文件输出后有值单元格对应的列高未按缺省值设置
sheet.setDefaultColumnWidth(20);//设置缺省列宽
HSSFCell cell = row1.createCell(0);//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
cell.setCellValue("学员考试成绩一览表");//设置单元格内容
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
HSSFRow row2 = sheet.createRow(1);//在sheet里创建第二行
/*创建单元格并设置单元格内容*/
row2.createCell(0).setCellValue("姓名");
row2.createCell(1).setCellValue("班级");
row2.createCell(2).setCellValue("笔试成绩");
row2.createCell(3).setCellValue("机试成绩");
/*在sheet里创建第三行*/
HSSFRow row3=sheet.createRow(2);
row3.createCell(0).setCellValue("李明");
row3.createCell(1).setCellValue("As178");
row3.createCell(2).setCellValue(87);
row3.createCell(3).setCellValue(78);
sheet.setColumnWidth(1, 256 * 20);//设置指定列的列宽,256 * 50这种写法是因为width参数单位是单个字符的256分之一
/**
* 输出
*/
FileOutputStream outputStream = new FileOutputStream("D:\\test.xls");
workbook.write(outputStream);
outputStream.flush();
}
}
POI导出Excel代码片段
最新推荐文章于 2024-01-16 15:55:12 发布