POI之HSSF学习(二)
以前仅仅是对一个单元格设置值,没有涉及到格式的问题,我们可以设置丰富的格式,比如一个单元格的边框,字体,颜色,背景颜色等等,(这里有一个限制,就是对于一个单元格内还不能够写入丰富文本)。
在HSSF中专门有一个类来保存格式相关的信息HSSFCellStyle,得到一个风格描述HSSFCellStyle cs = workbook.createCellStyle();
对一个cell设置风格cell.setCellStyle(HSSFCellStyle)
在HSSFCellStyle中包括了字体,边框,颜色等信息。在HSSF中用到的字体类是不同于JAVA中的字体类的。
HSSFCellStyle cs = workbook.createCellStyle();//创建一个style
HSSFFont littleFont = workbook.createFont();//创建一个Font
littleFont.setFontName("SimSun");
littleFont.setFontHeightInPoints((short)7);
cs.setFont(littleFont);//设置字体
cs.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
cs.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直举重
cs.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框
cs.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
cs.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
cs.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
我们经常有的一个操作就是合并单元格,在HSSF中合并单元格是如下的操作
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 1);
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue("This is a test of merging");
sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));//指定合并区域
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
合并区域是分别指定起始和终了的列和行,都是从0开始
下面实现的方法来填充一个区域,可以指定style
public void fillMergedRegion(HSSFWorkbook workbook,HSSFSheet sheet, Region region, String text, HSSFCellStyle cs) {
setRegionStyle(workbook, sheet, region, cs);
HSSFRow row;
HSSFCell cell;
row = sheet.getRow(region.getRowFrom());
cell = row.getCell(region.getColumnFrom());
cell.setCellValue(text);
sheet.addMergedRegion(region);
}
public void setRegionStyle(HSSFWorkbook workbook, HSSFSheet sheet, Region region, HSSFCellStyle cs) {
int toprowNum = region.getRowFrom();
for (int i = region.getRowFrom(); i <= region.getRowTo(); i ++) {
HSSFRow row = HSSFCellUtil.getRow(i, sheet);
for (int j = region.getColumnFrom(); j <= region.getColumnTo(); j++) {
HSSFCell cell = HSSFCellUtil.getCell(row, (short)j);
cell.setCellStyle(cs);
}
}
}
要做到对一个区域设置style的话,应该对整个区域的cell都设定同样的style来达到目的。
还有一个比较重要的就是设置公式,可以让其自动来进行计算。在HSSF中设置公式是相当容易的,专门有一个方法
cell.setCellFormula(formula);
formula就是一个公式的字符串。
这里还有涉及到的一个坐标的转换问题,在HSSF中是使用行,列来进行,而excel中公式的使用是A1,AB2等等类似的方式。
下面的一个方法实现了坐标的转换。
public static String convertCoordinate(int row, short col) {
int a = col / 26;
int b = col % 26;
StringBuffer XS = new StringBuffer("");
if (a > 0 && a <=9) {
XS = XS.append((char)('@' + a));
}
XS.append((char)('A' + b));
return XS.toString() + (row + 1);
}
基本的操作也就如此,在使用过程中觉得有些不习惯的就是使用的长度单位,在有些方法里面是这个单位,有的方法里面又是另外一个单位,比较的混乱。
分享到:
相关推荐
POI 学习资料POI 学习资料POI 学习资料POI 学习资料
POI学习笔记第二版更详细的POI学习笔记第二版更详细的
excelpoi学习代码
Apache POI学习文档V2.0.md
poi学习笔记,涵盖poi的所有用法,已经每个知识点的小例子
excel文件的读取 数据的生成excel文件,并打包 ,自动导出 poi资料
poi3.8快速学习指南
POI简介:在实际的开发中,表现层的解决方案多种多样,但是IE浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业办公系统中,常常有客户要求把他们的报表直接用Excel打开(电信系统、银行系统),或者是...
poi的源码和思维导图,值得大家学习!
excelPOI 代码 学习用
poi学习资料,用 java来操作 excel,生成excel文件件,各种形式的报表。
POI的学习笔记,总结的还行。希望大家会喜欢
poi学习的帮助手册,初学者有用,能很容易上手。
以上的poi导入到eclipse中,搭建好eclipse环境项目,那么我们便可更深一步的学习,java读取microsoft office的文件。对于初学者而言可以看看,我试过有成功的,加油!
poi操作excel java源代码分享
excelPOI 操作代码 学习使用
poi对excel控制,poi导出excel的部分的代码,及详细的注解说明,那来学习,自己在搞搞就能加入你的项目了
最全的百度POI分类表.xlsx
最近在学习POI POI的API没有真正的获取填写数据的行数 我在网上找到了 与其分享