上一篇讲解了一下如何读取excel,那在这篇就讲一下如何去写文件吧! 同样是用poi类工具去实现的。
- package com.common.util;
- import java.util.List;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.ss.usermodel.Cell;
- import org.apache.poi.ss.usermodel.CellStyle;
- import org.apache.poi.ss.usermodel.Font;
- import org.apache.poi.ss.usermodel.Row;
- import org.apache.poi.ss.usermodel.Sheet;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.apache.poi.ss.util.CellRangeAddress;
- import org.apache.poi.xssf.usermodel.XSSFCellStyle;
- public class ExcelUtil{
- public static HSSFWorkbook exportExcelForStudent(List studentList
- ) { //创建excel文件对象
- HSSFWorkbook wb = new HSSFWorkbook();
- //创建一个张表
- Sheet sheet = wb.createSheet();
- //创建第一行
- Row row = sheet.createRow(0);
- //创建第二行
- Row row1 = sheet.createRow(1);
- // 文件头字体
- Font font0 = createFonts(wb, Font.BOLDWEIGHT_BOLD, "宋体", false,
- (short) 200);
- Font font1 = createFonts(wb, Font.BOLDWEIGHT_NORMAL, "宋体", false,
- (short) 200);
- // 合并第一行的单元格
- sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 1));
- //设置第一列的文字
- createCell(wb, row, 0, “总数”, font0);
- //合并第一行的2列以后到8列(不包含第二列)
- sheet.addMergedRegion(new CellRangeAddress(0, 0, 2, 8));
- //设置第二列的文字
- createCell(wb, row, 2, “基本信息”, font0);
- //给第二行添加文本
- createCell(wb, row1, 0, "序号", font1);
- createCell(wb, row1, 1, "版本", font1);
- createCell(wb, row1, 2, "姓名", font1);
- createCell(wb, row1, 3, "性别", font1);
- createCell(wb, row1, 4, "年龄", font1);
- createCell(wb, row1, 5, "年级", font1);
- createCell(wb, row1, 6, "学校", font1);
- createCell(wb, row1, 7, "父母名称", font1);
- createCell(wb, row1, 8, "籍贯", font1);
- createCell(wb, row1, 9, "联系方式", font1);
- //第三行表示
- int l = 2;
- //这里将学员的信心存入到表格中
- for (int i = 0; i < studentList.size(); i++) {
- //创建一行
- Row rowData = sheet.createRow(l++);
- Student stu = studentList.get(i);
- createCell(wb, rowData, 0, String.valueOf(i + 1), font1);
- createCell(wb, rowData, 1, "3.0", font1);
- createCell(wb, rowData, 2, stu.getName(), font1);
- createCell(wb, rowData, 3, stu.getStudentsex(), font1);
- createCell(wb, rowData, 4, stu.getStudentage(), font1);
- createCell(wb, rowData, 5, stu.getGrade().getName(), font1);
- createCell(wb, rowData, 6, stu.getStudentschool(), font1);
- createCell(wb, rowData, 7, stu.getparents(), font1);
- createCell(wb, rowData, 8, stu.getStudentprovince()+stu.getStudentcity()+stu.getStudentarea(), font1);
- createCell(wb, rowData, 9, stu.getContact(), font1);
- }
- return wb;
- }
- /**
- * 创建单元格并设置样式,值
- *
- * @param wb
- * @param row
- * @param column
- * @param
- * @param
- * @param value
- */
- public static void createCell(Workbook wb, Row row, int column,
- String value, Font font) {
- Cell cell = row.createCell(column);
- cell.setCellValue(value);
- CellStyle cellStyle = wb.createCellStyle();
- cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
- cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_BOTTOM);
- cellStyle.setFont(font);
- cell.setCellStyle(cellStyle);
- }
- /**
- * 设置字体
- *
- * @param wb
- * @return
- */
- public static Font createFonts(Workbook wb, short bold, String fontName,
- boolean isItalic, short hight) {
- Font font = wb.createFont();
- font.setFontName(fontName);
- font.setBoldweight(bold);
- font.setItalic(isItalic);
- font.setFontHeight(hight);
- return font;
- }
- /**
- * 判断是否为数字
- *
- * @param str
- * @return
- */
- public static boolean isNumeric(String str) {
- if (str == null || "".equals(str.trim()) || str.length() > 10)
- return false;
- Pattern pattern = Pattern.compile("^0|[1-9]\\d*(\\.\\d+)?$");
- return pattern.matcher(str).matches();
- }
- }