poi生成Excel
2015-03-18 14:30
246 查看
需要用到的jar包:poi-3.9-20121203.jar。
源代码示例:
[java] view
plaincopy
/**
*
*/
package com.geloin.poi.bean;
import java.util.Date;
/**
* @author Geloin
*
*/
public class Person {
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 生日
*/
private Date birthday;
/**
* 是否学生
*/
private boolean isStudent;
/**
* 身高
*/
private double height;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public boolean isStudent() {
return isStudent;
}
public void setStudent(boolean isStudent) {
this.isStudent = isStudent;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
[java] view
plaincopy
/**
*
*/
package com.geloin.poi.main;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import com.geloin.poi.bean.Person;
/**
* @author Geloin
*
*/
public class PoiTest {
/**
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
List<Person> data = new ArrayList<Person>();
Person person1 = new Person();
person1.setName("张三");
person1.setAge(20);
person1.setBirthday(format.parse("1989-11-12"));
person1.setStudent(true);
person1.setHeight(168.8);
data.add(person1);
Person person2 = new Person();
person2.setName("李四");
person2.setAge(21);
person2.setBirthday(format.parse("1988-11-12"));
person2.setStudent(false);
person2.setHeight(169.8);
data.add(person2);
String exportPath = "d:/work/proTmp/geloin/poi/export.xls";
OutputStream out = new FileOutputStream(new File(exportPath));
// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = workbook.createSheet("sheet的名称");
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth(15);
// 设置标题
HSSFCellStyle titleStyle = workbook.createCellStyle();
// 居中显示
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 标题字体
HSSFFont titleFont = workbook.createFont();
// 字体大小
titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
titleStyle.setFont(titleFont);
HSSFCellStyle contentStyle = workbook.createCellStyle();
contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont contentFont = workbook.createFont();
contentFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
contentStyle.setFont(contentFont);
// 产生表格标题行
HSSFRow row = sheet.createRow(0);
String[] headers = new String[] { "序号", "姓名", "年龄", "出生年月", "是否学生",
"身高" };
for (int i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
cell.setCellStyle(titleStyle);
}
int rowCount = 1;
for (int i = 0; i < data.size(); i++, rowCount++) {
HSSFRow dataRow = sheet.createRow(rowCount);
Person person = data.get(i);
// 序号
HSSFCell cell0 = dataRow.createCell(0);
cell0.setCellValue((i + 1));
cell0.setCellStyle(contentStyle);
// 姓名
HSSFCell cell1 = dataRow.createCell(1);
cell1.setCellValue(person.getName());
cell1.setCellStyle(contentStyle);
// 年龄,转化为String后放到cell里面
HSSFCell cell2 = dataRow.createCell(2);
cell2.setCellValue(person.getAge().toString());
cell2.setCellStyle(contentStyle);
// 出生年月,转化为String后放到cell里面
HSSFCell cell3 = dataRow.createCell(3);
cell3.setCellValue(format.format(person.getBirthday()));
cell3.setCellStyle(contentStyle);
// 是否学生,转化为String后放到cell里面
HSSFCell cell4 = dataRow.createCell(4);
String isStudent = person.isStudent() ? "是" : "否";
cell4.setCellValue(isStudent);
cell4.setCellStyle(contentStyle);
// 身高,转化为String后放到cell里面
HSSFCell cell5 = dataRow.createCell(5);
cell5.setCellValue(String.valueOf(person.getHeight()));
cell5.setCellStyle(contentStyle);
}
// 合并,从第一行到最后一行,从第七列到第七列
sheet.addMergedRegion(new CellRangeAddress(0, rowCount - 1, 6, 6));
// 合并单元格的内容,合并单元格后,仅会保留第一行,第七列的内容,所以设置第一行第七列的内容
HSSFCell cell6 = row.createCell(6);
cell6.setCellStyle(contentStyle);
cell6.setCellValue("合并单元格的内容");
workbook.write(out);
}
}
简略过程:
1. 通过new HSSFWorkBook生成一个workBook;
2. 通过workBook的createSheet生成一个sheet,即工作表,同时可为工作表命名;
3. 通过sheet的createRow生成一行,sheet中的行数从0开始,表示第一行;
4. 通过row的createCell生成一列,sheet中的列数从0开始,表示第一列;
5. 通过workBook.write,将内容输出到一个excel文件中。
主要说明:
1. HSSFCellStyle用于设定单元格的style;
2. HSSFFont用于设定单元格的字体;
3. 通过sheet.addMergedRegion(开始行号,结束行号,开始列号,结束列号)方法,可合并单元格,当需要合并多行的某列时,设置开始列号等于结束列号即可;当需要合并多列的某行时,设置开始行号等于结束行号即可;
4. Excel有一特性——合并多行时,合并后的内容为合并中的第一行的内容;合并多列时,合并后的内容为合并中的多列的最左上角一列的内容——所以在合并时,只需要设置指定的单元格的内容,即可设置合并后的单元格的内容;
5. 行号和列号均是从0开始的,表示第一行或第一列。
文章转载:http://blog.csdn.net/geloin/article/details/17219885
源代码示例:
[java] view
plaincopy
/**
*
*/
package com.geloin.poi.bean;
import java.util.Date;
/**
* @author Geloin
*
*/
public class Person {
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 生日
*/
private Date birthday;
/**
* 是否学生
*/
private boolean isStudent;
/**
* 身高
*/
private double height;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public boolean isStudent() {
return isStudent;
}
public void setStudent(boolean isStudent) {
this.isStudent = isStudent;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
[java] view
plaincopy
/**
*
*/
package com.geloin.poi.main;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import com.geloin.poi.bean.Person;
/**
* @author Geloin
*
*/
public class PoiTest {
/**
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
List<Person> data = new ArrayList<Person>();
Person person1 = new Person();
person1.setName("张三");
person1.setAge(20);
person1.setBirthday(format.parse("1989-11-12"));
person1.setStudent(true);
person1.setHeight(168.8);
data.add(person1);
Person person2 = new Person();
person2.setName("李四");
person2.setAge(21);
person2.setBirthday(format.parse("1988-11-12"));
person2.setStudent(false);
person2.setHeight(169.8);
data.add(person2);
String exportPath = "d:/work/proTmp/geloin/poi/export.xls";
OutputStream out = new FileOutputStream(new File(exportPath));
// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = workbook.createSheet("sheet的名称");
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth(15);
// 设置标题
HSSFCellStyle titleStyle = workbook.createCellStyle();
// 居中显示
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 标题字体
HSSFFont titleFont = workbook.createFont();
// 字体大小
titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
titleStyle.setFont(titleFont);
HSSFCellStyle contentStyle = workbook.createCellStyle();
contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont contentFont = workbook.createFont();
contentFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
contentStyle.setFont(contentFont);
// 产生表格标题行
HSSFRow row = sheet.createRow(0);
String[] headers = new String[] { "序号", "姓名", "年龄", "出生年月", "是否学生",
"身高" };
for (int i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
cell.setCellStyle(titleStyle);
}
int rowCount = 1;
for (int i = 0; i < data.size(); i++, rowCount++) {
HSSFRow dataRow = sheet.createRow(rowCount);
Person person = data.get(i);
// 序号
HSSFCell cell0 = dataRow.createCell(0);
cell0.setCellValue((i + 1));
cell0.setCellStyle(contentStyle);
// 姓名
HSSFCell cell1 = dataRow.createCell(1);
cell1.setCellValue(person.getName());
cell1.setCellStyle(contentStyle);
// 年龄,转化为String后放到cell里面
HSSFCell cell2 = dataRow.createCell(2);
cell2.setCellValue(person.getAge().toString());
cell2.setCellStyle(contentStyle);
// 出生年月,转化为String后放到cell里面
HSSFCell cell3 = dataRow.createCell(3);
cell3.setCellValue(format.format(person.getBirthday()));
cell3.setCellStyle(contentStyle);
// 是否学生,转化为String后放到cell里面
HSSFCell cell4 = dataRow.createCell(4);
String isStudent = person.isStudent() ? "是" : "否";
cell4.setCellValue(isStudent);
cell4.setCellStyle(contentStyle);
// 身高,转化为String后放到cell里面
HSSFCell cell5 = dataRow.createCell(5);
cell5.setCellValue(String.valueOf(person.getHeight()));
cell5.setCellStyle(contentStyle);
}
// 合并,从第一行到最后一行,从第七列到第七列
sheet.addMergedRegion(new CellRangeAddress(0, rowCount - 1, 6, 6));
// 合并单元格的内容,合并单元格后,仅会保留第一行,第七列的内容,所以设置第一行第七列的内容
HSSFCell cell6 = row.createCell(6);
cell6.setCellStyle(contentStyle);
cell6.setCellValue("合并单元格的内容");
workbook.write(out);
}
}
简略过程:
1. 通过new HSSFWorkBook生成一个workBook;
2. 通过workBook的createSheet生成一个sheet,即工作表,同时可为工作表命名;
3. 通过sheet的createRow生成一行,sheet中的行数从0开始,表示第一行;
4. 通过row的createCell生成一列,sheet中的列数从0开始,表示第一列;
5. 通过workBook.write,将内容输出到一个excel文件中。
主要说明:
1. HSSFCellStyle用于设定单元格的style;
2. HSSFFont用于设定单元格的字体;
3. 通过sheet.addMergedRegion(开始行号,结束行号,开始列号,结束列号)方法,可合并单元格,当需要合并多行的某列时,设置开始列号等于结束列号即可;当需要合并多列的某行时,设置开始行号等于结束行号即可;
4. Excel有一特性——合并多行时,合并后的内容为合并中的第一行的内容;合并多列时,合并后的内容为合并中的多列的最左上角一列的内容——所以在合并时,只需要设置指定的单元格的内容,即可设置合并后的单元格的内容;
5. 行号和列号均是从0开始的,表示第一行或第一列。
文章转载:http://blog.csdn.net/geloin/article/details/17219885
相关文章推荐
- poi+jdbc实现从数据库中导出表的数据字典结构(单个sheet和多个sheet供你选择),并且生成excel文档,作者:vipyhd
- poi 操作excel 生成超链接
- 关于poi导出大数据量EXCEL导出缓慢的解决方案--生成xml格式的表格文件(注意xls格式为03 07下格式会不一样)
- 使用POI生成Excel报表
- POI 生成excel
- 利用POI生成Excel并通过Servlet下载示例
- 使用POI和dom4j来解析Excel生成Xml
- POI获取JXL生成的Excel带公式Cell返回空
- java生成excel报表(poi)
- java--poi生成excel动态合并内容相同的行
- Java利用POI生成Excel强制换行
- POI报表之生成excel
- 实现poi方式生成excel文件和web类根据路径生成java实例的反射技术的springmvc方法的方法
- POI java excel 生成下拉列表
- POI 生成excel
- POI 控制 excel 生成图表的方式(一)
- poi 读取Excel文件模板生成报表文件
- 如何在Struts的Action中直接使用POI生成Excel并下载
- 使用POI生成excel文件,可以自动调整列宽等
- Scala使用POI生成Excel的Servlet