Java使用Apache POI导出Excel
2017-09-27 本文已影响359人
Mr_欢先生
1.POI简单介绍
Apache POI 是用Java 编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对 Microsoft Office 格式档案读和写的功能
- HSSF 提供读写Microsoft Excel XLS格式档案的功能。
- XSSF 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
- HWPF 提供读写Microsoft Word DOC格式档案的功能。
- HSLF 提供读写Microsoft PowerPoint格式档案的功能。
- HDGF 提供读Microsoft Visio格式档案的功能。
- HPBF 提供读Microsoft Publisher格式档案的功能。
- HSMF 提供读Microsoft Outlook格式档案的功能。
2.步骤
1.环境配置:导入jar包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
2.创建一个Excel工作簿
@Test
public void test() throws IOException {
//定义一个工作蒲
Workbook wb = new HSSFWorkbook();
//定义一个输出流
FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲.xls");
//写入在输出流
wb.write(fileOutputStream);
//关闭输出流
fileOutputStream.close();
}
3.创建一个sheet页
@Test
public void sheet() throws IOException {
//定义一个工作蒲
Workbook wb = new HSSFWorkbook();
//创建sheet页面
wb.createSheet("第一个sheet页");
wb.createSheet("第二个sheet页");
//定义一个输出流
FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲带有sheet页.xls");
//写入在输出流
wb.write(fileOutputStream);
//关闭输出流
fileOutputStream.close();
}
sheet页
4.创建行和列
@Test
public void row() throws IOException {
//定义一个工作蒲
Workbook wb = new HSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("学生信息sheet页");
//创建一行
Row row = sheet.createRow(0);
//创建一个单元格
Cell cell =null;
for(int i = 0 ;i<5;i++){
row.createCell(i).setCellValue("写入信息:单元格内容"+i);
}
//定义一个输出流
FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel学生信息.xls");
//写入在输出流
wb.write(fileOutputStream);
//关闭输出流
fileOutputStream.close();
}
5.创建一个时间样式到Excel
@Test
public void date() throws IOException {
//定义一个工作蒲
Workbook wb = new HSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("时间sheet页");
//创建一行
Row row = sheet.createRow(0);
//创建一个单元格
Cell cell = row.createCell(0);
cell.setCellValue(new Date());
CreationHelper creationHelper = wb.getCreationHelper();
//设置单元格样式
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("YYYY-MM-DD hh:mm:ss"));
cell = row.createCell(1);
cell.setCellValue(new Date());
//设置日期样式
cell.setCellStyle(cellStyle);
//定义一个输出流
FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel日期格式.xls");
//写入在输出流
wb.write(fileOutputStream);
//关闭输出流
fileOutputStream.close();
}
6.单元格对其方式及行高
@Test
public void style() throws IOException {
//定义一个工作蒲
Workbook wb = new HSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("第一个sheet");
//创建一行
Row row = sheet.createRow(0);
//设置行高
row.setHeightInPoints(30);
//创建一个单元格
createCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER,HSSFCellStyle.VERTICAL_BOTTOM);
createCell(wb,row,(short)1,HSSFCellStyle.ALIGN_JUSTIFY,HSSFCellStyle.VERTICAL_CENTER);
createCell(wb,row,(short)2,HSSFCellStyle.ALIGN_CENTER_SELECTION,HSSFCellStyle.VERTICAL_JUSTIFY);
//定义一个输出流
FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls");
//写入在输出流
wb.write(fileOutputStream);
//关闭输出流
fileOutputStream.close();
}
/**
* 创建一个单元格设置对应的对其方式
* @param workbook 工作蒲
* @param row 行
* @param column 列
*/
private static void createCell(Workbook workbook, Row row, short column,short halign,short valign){
Cell cell = row.createCell(column);//创建单元格
cell.setCellValue(new HSSFRichTextString("我是富文本"));//设置值
CellStyle cellStyle = workbook.createCellStyle();//创建样式
cellStyle.setAlignment(halign);//设置单元格水平方向对其方式
cellStyle.setVerticalAlignment(valign);//设置单元格垂直方向对其方式
cell.setCellStyle(cellStyle);
}
合并单元格
@Test
public void test1() throws IOException {
//定义一个工作蒲
Workbook wb = new HSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("第一个sheet");
//创建一行
Row row = sheet.createRow(1);
//设置行高
row.setHeightInPoints(30);
//创建一个单元格
Cell cell = row.createCell(1);
cell.setCellValue("合并单元格");
//合并单元格(起始行,结束行,起始列,结束列)
sheet.addMergedRegion(new CellRangeAddress(1,2,1,2));
//定义一个输出流
FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls");
//写入在输出流
wb.write(fileOutputStream);
//关闭输出流
fileOutputStream.close();
}