一、POI方法导出Excel文件
meven包:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
二、 POI HSSF API组件详解
HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:
三、输出到本地
@Test
public void excelPoi1() throws IOException {
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet = wb.createSheet("成绩表");
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
HSSFRow row1 = sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
HSSFCell cell = row1.createCell(0);
//设置单元格内容
cell.setCellValue("学员考试成绩一览表");
//合并单元格CellRangeAddress构造参数依次表示 起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
//设置单元格格式
HSSFCellStyle cellStyle = wb.createCellStyle();
HSSFFont fontStyle=wb.createFont();
//设置字体样式
fontStyle.setFontName("黑体");
//设置字体高度
fontStyle.setFontHeightInPoints((short)20);
//设置一个字体的颜色
//2表示红色
//3表示绿色
//4表示蓝色
//5表示黄色
//6表示紫色
//7表示亮蓝色
//8表示黑色
//9表示白色
fontStyle.setColor((short) 6);
//设置斜体
fontStyle.setItalic(false);
//设置下划线
fontStyle.setUnderline(HSSFFont.U_SINGLE);
//设置粗体
fontStyle.setBold(true);
//设置日期型数据的显示样式
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
//设置背景颜色
cellStyle.setFillForegroundColor((short) 13);
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 将字体对象赋值给单元格样式对象
cellStyle.setFont(fontStyle);
// 将单元格样式应用于单元格
cell.setCellStyle(cellStyle);
//在sheet里创建第二行
HSSFRow row2 = sheet.createRow(1);
//创建单元格并设置单元格内容
row2.createCell(0).setCellValue("姓名");
row2.createCell(1).setCellValue("班级");
row2.createCell(2).setCellValue("笔试成绩");
row2.createCell(3).setCellValue("机试成绩");
//在sheet里创建第三行
HSSFRow row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("李明");
row3.createCell(1).setCellValue("As178");
row3.createCell(2).setCellValue(87);
row3.createCell(3).setCellValue(78);
//将文件输出本地
FileOutputStream output=new FileOutputStream("e:\\workbook2.xls");
wb.write(output);
output.flush();
System.out.println("ok");
}
导入excel
实现将已存在的Excel文件中的数据导入到系统中的基本步骤同导出十分的类似,关键在于要了解要导入Excel文件的结构,比如数据有哪些列、读取数据起始位置(有效数据从第几行几列开始)等。
//解析Excel
public void readExcel(String filePath) throws IOException {
List temp = new ArrayList();
FileInputStream fileIn = new FileInputStream(filePath);
//根据指定的文件输入流导入Excel从而产生Workbook对象
Workbook wb0 = new HSSFWorkbook(fileIn);
//获取Excel文档中的第一个表单
Sheet sht0 = wb0.getSheetAt(0);
//对Sheet中的每一行进行迭代
for (Row r : sht0) {
System.out.println("第"+r+"行-----------");
//如果当前行的行号(从0开始)未达到2(第三行)则从新循环
if (r.getRowNum() < 1) {
continue;
}
for (int i = 0; i<5; i++) {
//取出当前行第1个单元格数据
String stringCellValue = r.getCell(i).getStringCellValue();
System.out.println(i+":"+stringCellValue);
}
}
}