poi如何去写入excel文件

上一篇讲解了一下如何读取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();
	}

}

 

 

 

你可能感兴趣的:(Excel)