1、导入poi使用的依赖包
<!-- excel编辑 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
2、java代码生成excel文档
public static void createExcel(String excelName) throws Exception {
//创建工作簿
XSSFWorkbook wb = new XSSFWorkbook();
//创建一个sheet
XSSFSheet sheet = wb.createSheet();
// 创建单元格样式
XSSFCellStyle style = wb.createCellStyle();
//创建字体
XSSFFont redFont = wb.createFont();
//设置字体颜色
redFont.setColor(Font.COLOR_RED);
//设置字体大小
redFont.setFontHeightInPoints((short) 10);
style.setFillForegroundColor((short)4); //设置要添加表格背景颜色
style.setFillPattern(FillPatternType.SOLID_FOREGROUND); //solid 填充
style.setAlignment(XSSFCellStyle.ALIGN_CENTER); //文字水平居中
style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//文字垂直居中
style.setBorderBottom(BorderStyle.THIN); //底边框加黑
style.setBorderLeft(BorderStyle.THIN); //左边框加黑
style.setBorderRight(BorderStyle.THIN); // 有边框加黑
style.setBorderTop(BorderStyle.THIN); //上边框加黑
style.setFont(redFont);
//为单元格添加背景样式
for (int i = 0; i < 6; i++) { //需要6行表格
Row row = sheet.createRow(i); //创建行
for (int j = 0; j < 6; j++) {//需要6列
row.createCell(j).setCellStyle(style);
}
}
//合并单元格
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));//合并单元格,cellRangAddress四个参数,第一个起始行,第二终止行,第三个起始列,第四个终止列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 1, 5));
//填入数据
XSSFRow row = sheet.getRow(0); //获取第一行
row.getCell(1).setCellValue("2018期末考试"); //在第一行中创建一个单元格并赋值
//设置字体样式为字体低端有下划线
XSSFFont line = wb.createFont();
line.setColor(Font.COLOR_NORMAL);
//文字下划线
line.setUnderline(FontUnderline.SINGLE);
XSSFCellStyle lineStyle = wb.createCellStyle();
lineStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); //文字水平居中
lineStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//文字垂直居中
lineStyle.setFont(line);
row.getCell(1).setCellStyle(lineStyle);
//设置超链接
XSSFCreationHelper createHelper = new XSSFCreationHelper((XSSFWorkbook) wb);
XSSFHyperlink baiduLink = createHelper.createHyperlink(HyperlinkType.FILE);
baiduLink.setAddress("http://www.baidu.com/baidu?wd="+row.getCell(1).getStringCellValue());
row.getCell(1).setHyperlink(baiduLink);
XSSFRow row1 = sheet.getRow(1); //获取第二行,为每一列添加字段
row1.getCell(1).setCellValue("语文");
row1.getCell(2).setCellValue("数学");
row1.getCell(3).setCellValue("英语");
row1.getCell(4).setCellValue("物理");
row1.getCell(5).setCellValue("化学");
XSSFRow row2 = sheet.getRow(2); //获取第三行
row2.getCell(0).setCellValue("张三");
XSSFRow row3 = sheet.getRow(3); //获取第四行
row3.getCell(0).setCellValue("张三");
XSSFRow row4 = sheet.getRow(4); //获取第五行
row4.getCell(0).setCellValue("张三");
XSSFRow row5 = sheet.getRow(5); //获取第五行
row5.getCell(0).setCellValue("张三");
//创建第二个工作区
XSSFSheet sheet1 = wb.createSheet("第二个工作区");
for (int i = 0; i < 6; i++) { //需要6行表格
Row sheet1_row = sheet1.createRow(i); //创建行
for (int j = 0; j < 6; j++) {//需要6列
sheet1_row.createCell(j);//创建列
}
}
XSSFRow sheet1_row_xxs = sheet1.getRow(0); //获取第一个工作间的第一行
sheet1_row_xxs.getCell(0).setCellValue("test"); //在第一行中创建一个单元格并赋值
//将数据写入文件
FileOutputStream out = new FileOutputStream(excelName);
wb.write(out);
}
3、java代码导入excel并读取文档信息
public static void readExcel(String excelName) throws IOException {
//将文件读入
InputStream in = new FileInputStream(new File(excelName));
//创建工作簿
XSSFWorkbook wb = new XSSFWorkbook(in);
//读取第一个sheet
Sheet sheet = wb.getSheetAt(0);
//获取第二行
Row row = sheet.getRow(1);
//循环读取科目
for (int i = 1; i < 6; i++) {
System.out.println(row.getCell(i));
}
}
4、测试导出样式以及读取结果
4.1测试导出样式
4.2测试导入读取结果