poi版本为3.14
public void excelOutput(){
try {
HSSFWorkbook workbook = new HSSFWorkbook();//创建Excel工作簿对象
HSSFSheet sheet = workbook.createSheet();//在工作簿中创建工作表对象
workbook.setSheetName(0, "测试");//设置工作表的名称
HSSFRow row = sheet.createRow(0);//创建第1行
HSSFCell cell_01 = row.createCell(0);//一行中的第1个单元格
cell_01.setCellValue("第一个单元格");//给单元格添加内容
HSSFCell cell_02 = row.createCell(1);//一行中的第2个单元格
cell_02.setCellValue("第二个单元格");//给单元格添加内容
String filePath = "D:";//文件保存路径
String fileName = "测试文件.xlsx";//文件名称
File xlsFile = new File(filePath,fileName);
FileOutputStream fos = new FileOutputStream(xlsFile);//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
workbook.write(fos);//将文档对象写入文件输出流
fos.close();//关闭流
System.out.println("导出完成");
} catch (Exception e) {
System.out.println("导出失败");
}
}
给导出的excel表格添加样式:
//创建单元格的样式
HSSFCellStyle cellStyle = workbook.createCellStyle();//用于设置单元格的显示样式
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));//设置单元格内容格式。
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置水平对齐样式,水平对其
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置单元格垂直对齐方式,居中对齐
cellStyle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);//设置单元格顶部边框的线条样式
cellStyle.setTopBorderColor(HSSFColor.YELLOW.index);//设置单元格左侧边框颜色
//设置单元格字体
HSSFFont font = workbook.createFont();//创建字体对象
font.setColor(HSSFColor.SKY_BLUE.index);//设置字体颜色
font.setFontHeightInPoints((short) 15);//设置字号大小
font.setFontName("楷体");//设置字体
font.setItalic(true);//是否倾斜
font.setStrikeout(false);//是否带有删除线
font.setUnderline(HSSFFont.U_SINGLE);//设置下划线
cellStyle.setFont(font);//将字体设置添加到单元格样式中。
把设置好的样式,放入单元格中。
cell_02.setCellStyle(cellStyle);//把样式应用到单元格上面,这里是第二个单元格。
合并单元格
HSSFRow row = sheet.createRow(0);//创建第1行
sheet.addMergedRegion(new CellRangeAddress(0,1,0,5));//合并单元格,合并下标为0和1的两行中的小标为0-5的单元格。
上面的两行代码,第二行是合并单元格的代码,第一行是用来表示第二行代码应该摆放的位置。
POI导出图片:
FileInputStream fis = new FileInputStream("D:\\1.jpg");//图片路径
byte[] imgBytes = new byte[fis.available()];
fis.read(imgBytes);
int picIndex = workbook.addPicture(imgBytes, workbook.PICTURE_TYPE_JPEG);//图片格式
HSSFClientAnchor anchor = new HSSFClientAnchor(); //创建显示图片的区域
anchor.setAnchor((short)0, 0, 5, 5, (short)5, 5, 130, 200);
HSSFPatriarch patri = sheet.createDrawingPatriarch();//显示图片
patri.createPicture(anchor , picIndex);
代码摆放位置:”文件保存路径”上面就可以了。
导出图片时,需要添加一个包:commons-codec-1.10.jar
所有的样式都是有多种的,这里只是列举了一种,其他的可以去poi的api中去看。
如果有多个单元格需要不同的样式,那么就需要创建多个HSSFCellStyle,为其设置不同的样式。
其中合并单元格,如果是要设置边框样式,那么就需要把合并的几个都设置。