使用的jar包:
poi-3.17.jar
poi-examples-3.17.jar
poi-excelant-3.17.jar
poi-ooxml-3.17.jar
poi-ooxml-schemas-3.17.jar
poi-scratchpad-3.17.jar
对自己使用poi的一个简单的总结,备忘一下供自己以后参考,也希望对刚接触poi的朋友有所帮助,其他一些样式的使用方法请自行上网搜索。
// 创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook workbook = new HSSFWorkbook();
//设置字体样式
HSSFFont font = workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 14);// 设置字体大小
// 建立新的sheet对象(excel的表单)
HSSFSheet sheet = workbook.createSheet();
//定义行样式
HSSFCellStyle cell_Style = (HSSFCellStyle) workbook.createCellStyle();
cell_Style.setBorderBottom(BorderStyle.THIN); // 下边框
cell_Style.setBorderLeft(BorderStyle.THIN);// 左边框
cell_Style.setBorderTop(BorderStyle.THIN);// 上边框
cell_Style.setBorderRight(BorderStyle.THIN);// 右边框
cell_Style.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直对齐居中
//字体样式定义完成后要放入行样式中才能生效
cell_Style.setFont(font);
//创建第一行
HSSFRow row = sheet.createRow((short) 0);
// 表头第一行合并5列 参数(第一行,第一行,第一列,第五列)
CellRangeAddress region = new CellRangeAddress(0, 0, 0, 4);
sheet.addMergedRegion(region);
HSSFCell cell = null;
for (int i = 0; i < title.size(); i++) {
//循环创建单元格
cell = row.createCell(i);
//设置精准行高 参数(想设置的行高*20)=Excel中的行高
row.setHeight((short)(43.5*20));
//为单元格附加样式
cell.setCellStyle(cell_Style);
//将值传入单元格中
cell.setCellValue(title.get(i));
}
//循环的数据内容从第几行数开始
//表头部占了4行
int k=3;
//定义序号列的值
int j=1;
// str我是用String数组来存储数据的
for (int i = 0; i < str.length; i=i++) {
// 创建循环数据的第一行
HSSFRow nextRow = sheet.createRow(k);
// 创建第一列 根据需要来创建多少列
HSSFCell cell0 = nextRow.createCell(0);
//赋予第一列样式
cell0.setCellStyle(cell_Style);
// 赋值 序号
cell0.setCellValue(j);
}
//精准设置列宽 参数(第几列,(int)((要设置的列宽 + 0.72) * 256))=Excel列宽
sheet.setColumnWidth(0, (int)((8.38 + 0.72) * 256));
//列宽的设置写在最后
sheet.autoSizeColumn(i);//自动调整列宽