POI的简介
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
HSSF的概况
HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。
POI Excel文档结构类
HSSFWorkbook excel 文档对象
HSSFSheet excel的sheet HSSFRow excel 的 行
HSSFCell excel的单元格 HSSFFont excel 字体
HSSFName 名称 HSSFDataFormat 日期格式
HSSFHeader sheet头
HSSFFooter sheet尾
HSSFCellStyle cell样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
Excel常用操作方法
1、 得到Excel常用对象
1 POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));
3
4 //得到Excel工作簿对象
5 HSSFWorkbook wb = new HSSFWorkbook(fs);
6
7 //得到Excel工作表对象
8 HSSFSheet sheet = wb.getSheetAt(0);
9
10 //得到Excel工作表的行
11 HSSFRow row = sheet.getRow(i);
12
13 //得到Excel工作表指定行的单元格
14 HSSFCell cell = row.getCell((short) j);
15
16 cellStyle = cell.getCellStyle();//得到单元格样式
2、建立Excel常用对象
1 HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象
2 HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象
3 HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行
4 cellStyle = wb.createCellStyle();//创建单元格样式
5 row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格
6 row.createCell((short)0).setCellValue(1); //设置Excel工作表的值
3、设置sheet名称和单元格内容
1 wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);
2 cell.setEncoding((short) 1);
3 cell.setCellValue("单元格内容");
4、取得sheet的数目
1 wb.getNumberOfSheets()
5、 根据index取得sheet对象;取得有效的行数
//根据index取得sheet对象; HSSFSheet sheet = wb.getSheetAt(0); //取得有效的行数; int rowcount = sheet.getLastRowNum(); //取得一行的有效单元格个数; row.getLastCellNum(); //单元格值类型读写 cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型 cell.getNumericCellValue();//读取为数值类型的单元格内容
6、Excel的一些设置方法
1 //设置列宽、行高
2
3 sheet.setColumnWidth((short)column,(short)width);
4 row.setHeight((short)height);
5
6 //添加区域,合并单元格
7
8 Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo
9 ,(short)columnTo);//合并从第rowFrom行columnFrom列
10 sheet.addMergedRegion(region);// 到rowTo行columnTo的区域
11 //得到所有区域
12 sheet.getNumMergedRegions()
13
14 //常用单元格边框格式
15
16 HSSFCellStyle style = wb.createCellStyle();
17 style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框
18 style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框
19 style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
20 style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
21
22 //设置字体和内容位置
23
24 HSSFFont f = wb.createFont();
25 f.setFontHeightInPoints((short) 11);//字号
26 f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗
27 style.setFont(f);
28 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
29 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
30 style.setRotation(short rotation);//单元格内容的旋转的角度
31 HSSFDataFormat df = wb.createDataFormat();
32 style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式
33 cell.setCellFormula(string);//给单元格设公式
34 style.setRotation(short rotation);//单元格内容的旋转的角度
35
36 //设置打印区域
37
38 HSSFSheet sheet = wb.createSheet("Sheet1");
39 wb.setPrintArea(0, "$A$1:$C$2");
40
41 //填充和颜色设置
42
43 HSSFCellStyle style = wb.createCellStyle();
44 style.setFillBackgroundColor(HSSFColor.AQUA.index);
45 style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
46 HSSFCell cell = row.createCell((short) 1);
47 cell.setCellValue("X");
48 style = wb.createCellStyle();
49 style.setFillForegroundColor(HSSFColor.ORANGE.index);
50 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
51 cell.setCellStyle(style);
52
53 //自定义颜色
54
55 HSSFCellStyle style = wb.createCellStyle();
56 style.setFillForegroundColor(HSSFColor.LIME.index);
57 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
58 HSSFFont font = wb.createFont();
59 font.setColor(HSSFColor.RED.index);
60 style.setFont(font);
61 cell.setCellStyle(style);
7、插入图片
1 //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
2 ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
3 BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));
4 ImageIO.write(bufferImg,"jpg",byteArrayOut);
5 //读进一个excel模版
6 FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");
7 fs = new POIFSFileSystem(fos);
8 //创建一个工作薄
9 HSSFWorkbook wb = new HSSFWorkbook(fs);
10 HSSFSheet sheet = wb.getSheetAt(0);
11 HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
12 HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);
13 patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
8、保存Excel文件
1 FileOutputStream fileOut = new FileOutputStream(path); 2 wb.write(fileOut);
来源:https://www.cnblogs.com/XiDaPuBen/p/8124103.html