Java使用POI生成Excel文件
目录
- 代码地址
- 生成简单Excel文件
- 案例:学生成绩单
- 使用模板生成学生成绩单
一、代码地址
点击此处,跳转到本次演示的Demo源码地址
二、生成简单Excel文件
1.导入Jar包
普通项目:
Maven项目:
2.操作POI的七个步骤
a. 创建一个工作簿workbook
b. 创建一个工作表sheet
c. 创建一个行对象row(下标起始值为0)
d. 创建一个单元格对象cell(下标起始值为0)
e. 设置单元格的内容
f. 设置单元格的样式(如字体)
g. 保存,关闭流对象
3.代码实现
// a. 创建一个工作簿workbook
Workbook workbook = new HSSFWorkbook();
// b. 创建一个工作表sheet
Sheet sheet = workbook.createSheet();
// c. 创建一个行对象row(下标起始值为0),这里是第4行
Row row = sheet.createRow(3);
// d. 创建一个单元格对象cell(下标起始值为0),这里是第四列
Cell cell = row.createCell(3);
// e. 设置单元格的内容
cell.setCellValue("我的github地址:https://github.com/hdonghong");
// f. 设置单元格的样式(如字体)
CellStyle cellStyle = workbook.createCellStyle();
Font font = workbook.createFont();
font.setFontName("Microsoft YaHei UI");
font.setFontHeightInPoints((short)40);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
// g. 保存,关闭流对象,在D盘生成excel测试.xls文件
OutputStream os = new FileOutputStream("D:\\excel测试.xls");
workbook.write(os);
os.close();
三、案例:学生成绩单
1.代码实现(不完整):
/**
* 生成学生成绩单(不使用模板)
* 注意,下面使用的bigTitle、title、text等方法都是关于设置单元格样式的,
* 因加入后妨碍理解代码,在此不作展示,如需要,请自行到我github源码处下载:
* https://github.com/hdonghong/JavaProject/blob/master/business_management/management_parent/management_web/src/test/java/management_web/PoiTest.java
* @throws Exception
*/
public void test2() throws Exception {
int cellNo = 1;// 单元格下标
Cell cell = null;// 单元格对象
int rowNo = 0;// 行下标
Row row = null;// 行对象
// 创建工作簿
Workbook workbook = new HSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet();
// 设置单元格宽
sheet.setColumnWidth(cellNo++, 30*256);
sheet.setColumnWidth(cellNo++, 30*256);
sheet.setColumnWidth(cellNo++, 30*256);
//--------------设置大标题--------------
row = sheet.createRow(rowNo);// 创建大标题的行对象
row.setHeightInPoints(36);// 设置行高
cellNo = 1;// 重置单元格下标为1
cell = row.createCell(cellNo);// 在当前行上创建一个单元格对象
sheet.addMergedRegion(new CellRangeAddress(rowNo, rowNo, cellNo, cellNo+2));// 合并单元格
cell.setCellValue("学生成绩表");// 设置单元格内容
cell.setCellStyle(this.bigTitle(workbook));// 设置单元格样式
//--------------设置小标题--------------
row = sheet.createRow(++rowNo);
row.setHeightInPoints(26.25f);// 设置行高
String titles[] = {
"学号","姓名","成绩(单位:分)"};
// 创建单元格对象,设置内容与样式
for (String title : titles) {
cell = row.createCell(cellNo++);
cell.setCellValue(title);
cell.setCellStyle(this.title(workbook));
}
//--------------模拟数据输出--------------
row = sheet.createRow(++rowNo);
row.setHeightInPoints(24);// 设置行高
cellNo = 1;// 重置单元格下标为1
cell = row.createCell(cellNo++);
cell.setCellValue("200000");// 设置单元格内容,学号200000
cell.setCellStyle(this.text(workbook));
cell = row.createCell(cellNo++);
cell.setCellValue("老王");// 设置单元格内容,老王
cell.setCellStyle(this.text(workbook));
cell = row.createCell(cellNo++);
cell.setCellValue("59.9");// 设置单元格内容,59.9分
cell.setCellStyle(this.text(workbook));
// 保存,关闭流对象,在C盘生成excel测试.xls文件
OutputStream os = new FileOutputStream("D:\\excel测试.xls");
workbook.write(os);
os.close();
}
2.到D盘看运行结果如下
四、使用模板生成学生成绩单
1.先配置好模板
2.代码实现
/**
* 生成学生成绩单(使用模板)
* @throws Exception
*/
public void test3() throws Exception {
int cellNo = 1;// 单元格下标
Cell cell = null;// 单元格对象
int rowNo = 0;// 行下标
Row row = null;// 行对象
// 读取已存在的模板工作簿
Workbook workbook = new HSSFWorkbook(new FileInputStream("D:\\excel模板.xls"));
// 读取工作表
Sheet sheet = workbook.getSheetAt(0);
//--------------设置大标题--------------
// 不需要了
//--------------设置小标题--------------
// 不需要了
//--------------模拟数据输出--------------
row = sheet.createRow(rowNo += 2);// 读取到第三行
row.setHeightInPoints(24);// 设置行高
cellNo = 1;// 重置单元格下标为1
cell = row.createCell(cellNo++);
cell.setCellValue("200000");// 设置单元格内容,学号200000
cell = row.createCell(cellNo++);
cell.setCellValue("老王");// 设置单元格内容,老王
cell = row.createCell(cellNo++);
cell.setCellValue("59.9");// 设置单元格内容,59.9分
// 保存,关闭流对象,在D盘生成excel测试.xls文件
OutputStream os = new FileOutputStream("D:\\excel测试2.xls");
workbook.write(os);
os.close();
}
还没有评论,来说两句吧...