java poi生成excel并修改excel样式
2015-06-16 13:16
681 查看
1、poi生成excel 并设置样式
public void writeData(){
try{
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"model"的工作表,其语句为:
// HSSFSheet sheet = workbook.createSheet("model");
HSSFSheet sheet = workbook.createSheet();
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow((short)0);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell( 0);
//设置字体样式
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
// 定义单元格为字符串类型
cell.setCellStyle(cellStyle);
// 在单元格中输入一些内容
cell.setCellValue("增加值12");
//循环创建多行
for (int i = 1; i <=10; i++){
row = sheet.createRow(i);
row.createCell(0).setCellValue(i);
}
// 新建一输出文件流
FileOutputStream fileOut = new FileOutputStream("C:\\Users\\dell\\Desktop\\a1.xls");
// 把相应的Excel 工作簿存盘
workbook.write(fileOut);
fileOut.flush();
// 操作结束,关闭文件
fileOut.close();
System.out.println("文件生成...");
}catch(Exception e) {
System.out.println("已运行 xlCreate() : " + e );
}
}
2、需要注意的是,改变原excel(样式、行数、列数等)是需要在workbook.write之后才生效的
3. 设置单元格格式:
在这里,将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:
3.1 创建字体,设置其为红色、粗体:
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
3.2 创建格式
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
3.3应用格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题 ");
4.POI中Excel文件单元格的类型
在读取每一个单元格的值的时候,通过getCellType方法获得当前单元格的类型,在Excel中单元格有6种类型,如下所示。
1)CELL_TYPE_BLANK :空值
2)CELL_TYPE_BOOLEAN :布尔型
3)CELL_TYPE_ERROR : 错误
4)CELL_TYPE_FORMULA :公式型
5)CELL_TYPE_STRING:字符串型
6)CELL_TYPE_NUMERIC:数值型
如果单元格的Type为CELL_TYPE_NUMERIC时,还需要进一步判断该单元格的数据格式,因为它有可能是Date类型,在Excel中的Date类型也是以Double类型的数字存储的。Excel中的Date表示当前时间与1900年1月1日相隔的天数,所以需要调用HSSFDateUtil的isCellDateFormatted方法,判断该单元格的数据格式是否是Excel Date类型。如果是,则调用getDateCellValue方法,返回一个Java类型的Date。
因此读取Excel中单元格中的数据时,得判断单元格格式类型,这是我写的,参考一下:
private Object getCellData(Cell cell, FormulaEvaluator formula) {
if(cell == null) {
return null;
}
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
return cell.getRichStringCellValue().getString();
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue();
} else {
return cell.getNumericCellValue();
}
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue();
case Cell.CELL_TYPE_FORMULA:
return formula.evaluate(cell).getNumberValue();
default:
return null;
}
}
public void writeData(){
try{
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"model"的工作表,其语句为:
// HSSFSheet sheet = workbook.createSheet("model");
HSSFSheet sheet = workbook.createSheet();
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow((short)0);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell( 0);
//设置字体样式
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
// 定义单元格为字符串类型
cell.setCellStyle(cellStyle);
// 在单元格中输入一些内容
cell.setCellValue("增加值12");
//循环创建多行
for (int i = 1; i <=10; i++){
row = sheet.createRow(i);
row.createCell(0).setCellValue(i);
}
// 新建一输出文件流
FileOutputStream fileOut = new FileOutputStream("C:\\Users\\dell\\Desktop\\a1.xls");
// 把相应的Excel 工作簿存盘
workbook.write(fileOut);
fileOut.flush();
// 操作结束,关闭文件
fileOut.close();
System.out.println("文件生成...");
}catch(Exception e) {
System.out.println("已运行 xlCreate() : " + e );
}
}
2、需要注意的是,改变原excel(样式、行数、列数等)是需要在workbook.write之后才生效的
3. 设置单元格格式:
在这里,将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:
3.1 创建字体,设置其为红色、粗体:
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
3.2 创建格式
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
3.3应用格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题 ");
4.POI中Excel文件单元格的类型
在读取每一个单元格的值的时候,通过getCellType方法获得当前单元格的类型,在Excel中单元格有6种类型,如下所示。
1)CELL_TYPE_BLANK :空值
2)CELL_TYPE_BOOLEAN :布尔型
3)CELL_TYPE_ERROR : 错误
4)CELL_TYPE_FORMULA :公式型
5)CELL_TYPE_STRING:字符串型
6)CELL_TYPE_NUMERIC:数值型
如果单元格的Type为CELL_TYPE_NUMERIC时,还需要进一步判断该单元格的数据格式,因为它有可能是Date类型,在Excel中的Date类型也是以Double类型的数字存储的。Excel中的Date表示当前时间与1900年1月1日相隔的天数,所以需要调用HSSFDateUtil的isCellDateFormatted方法,判断该单元格的数据格式是否是Excel Date类型。如果是,则调用getDateCellValue方法,返回一个Java类型的Date。
因此读取Excel中单元格中的数据时,得判断单元格格式类型,这是我写的,参考一下:
private Object getCellData(Cell cell, FormulaEvaluator formula) {
if(cell == null) {
return null;
}
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
return cell.getRichStringCellValue().getString();
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue();
} else {
return cell.getNumericCellValue();
}
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue();
case Cell.CELL_TYPE_FORMULA:
return formula.evaluate(cell).getNumberValue();
default:
return null;
}
}
相关文章推荐
- poi生成Excel
- 背景、边框样式及变形处理
- css中min-width与max-width
- Firefox与IE的CSS兼容CSS HACK技巧
- 父元素与子元素之间的margin-top问题(css hack)
- css 兼容性总结
- css伪类
- 11-5设定图层样式
- html和CSS学习笔记(2):标签和html文件基本结构
- Html和CSS学习笔记(1):Html和CSS的关系
- ZH奶酪:通过CSS自定义HTML中hr样式-颜色-形状
- ZH奶酪:纯CSS自定义Html中Checkbox复选框样式
- css3动画——常用的贝塞尔曲线
- css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?
- (一)初识div+css
- css实现布局
- CSS 定位和布局
- 浏览器 CSS Hack 收集
- 前些日子用css画的大白
- 第008讲 div css开山篇