⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 excelcreate.java

📁 一个真实项目的源代码。有一个比较优秀的时间类
💻 JAVA
字号:
package com.work.excel;

/**
 * <p>Title: 公共项目类库</p>
 *
 * <p>Description: 公共项目类库</p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: juling studio</p>
 *
 * @author wangmj
 * @version 1.0
 */

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;

public class ExcelCreate {
	private static Log log = LogFactory.getLog(ExcelCreate.class);

	/**
	 * 建立excel表中的一个单元格。
	 * 
	 * @param wb
	 *            HSSFWorkbook 一个excel对象句柄。
	 * @param row
	 *            HSSFRow 一个excel的行
	 * @param column
	 *            short
	 * @param conValue
	 *            String
	 */
	private static void createCell(HSSFWorkbook wb, HSSFRow row, short column,
			String conValue, String valueType) {
		HSSFCell cell = row.createCell(column);
		HSSFCellStyle cellStyle = wb.createCellStyle();
		cellStyle.setAlignment(HSSFCellStyle.ALIGN_GENERAL);
		cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		cellStyle.setWrapText(true);
		cell.setCellStyle(cellStyle);
		cell.setEncoding(HSSFCell.ENCODING_UTF_16);
		valueType = valueType.toLowerCase();
		// 处理字符串兼容型。
		if ("string".equals(valueType.toLowerCase())) {
			// 处理字符串格式的数据
			if (isDigit(conValue)) {
				cell.setCellValue(Double.parseDouble(conValue));
			} else {
				cell.setCellValue(conValue);
			}
		} else if ("integer".equals(valueType) || "float".equals(valueType)) { // 处理数值型。
			try {
				if (conValue != null && !conValue.trim().equals("")
						&& !conValue.trim().equals("null")) {
					cell.setCellValue(Double.parseDouble(conValue));
				}
			} catch (NumberFormatException e) {
				cell.setCellValue(conValue);
			}
		} else if ("boolean".equals(valueType)) { // 处理boolean
			cell.setCellValue(Boolean.getBoolean(conValue));
		} else {
			cell.setCellValue(conValue);
		}
		// 处理单元格类型结束.
	}

	/**
	 * 创建标题.
	 * 
	 * @param wb
	 *            HSSFWorkbook
	 * @param sheet
	 *            HSSFSheet
	 * @param Title
	 *            String
	 * @param mergeCount
	 *            short 合并的横向单元格的数量。
	 */
	private static void createTitle(HSSFWorkbook wb, HSSFSheet sheet,
			String Title, short mergeCount) {
		HSSFRow tTitle = sheet.createRow(0);
		HSSFCell cell = tTitle.createCell((short) 0);
		HSSFCellStyle cellStyle = wb.createCellStyle();
		cellStyle.setAlignment(cellStyle.ALIGN_CENTER);
		HSSFFont f = wb.createFont();
		f.setFontName("黑体");
		f.setFontHeight((short) 500);
		cellStyle.setFont(f);
		cell.setCellStyle(cellStyle);
		cell.setEncoding(HSSFCell.ENCODING_UTF_16);
		cell.setCellValue(Title);
		sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) mergeCount));
	}

	/**
	 * 创建报表题头.
	 * 
	 * @param wb
	 *            HSSFWorkbook
	 * @param sheet
	 *            HSSFSheet
	 * @param tHead
	 *            String[]
	 */
	private static void createtHead(HSSFWorkbook wb, HSSFSheet sheet,
			String[] tHead) {
		int i = 0;
		HSSFRow bHead = sheet.createRow(0);
		for (i = 0; i < tHead.length; i++) {
			HSSFCell cell = bHead.createCell((short) i);
			HSSFCellStyle cellStyle = wb.createCellStyle();
			cellStyle.setAlignment(HSSFCellStyle.ALIGN_GENERAL);
			cellStyle.setFillBackgroundColor((short) 255);
			cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
			//cellStyle.setWrapText(true);
			cell.setCellStyle(cellStyle);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue(tHead[i]);
		}
	}


	/**
	 * 返回一个HSSFWorkbook对象,这个对象输出就形成了一个excel文件。
	 * @param tHeadCnName
	 *            每一列的中文名称;
	 * @param tHeadType
	 *            每一列的类型。其中包括string,float,integer,boolean
	 *            ,如果类型数组为null,那么说明所有的结果都是字符串类型;
	 * @param valueList
	 *            存储对象的list,包含的是字符串数组对象。
	 * @return HSSFWorkbook 对象。
	 */
	public HSSFWorkbook createExcel(String[] tHeadCnName, String[] tHeadType,
			List valueList) {
		HSSFWorkbook wb = new HSSFWorkbook();
		int row = 1; // excel表的第2行
		int colLEN = tHeadCnName.length; // 列的数量
		int rowLEN = valueList.size(); // 有多少条记录。
		try {
			row = 1;
			HSSFSheet sheet = wb.createSheet(); // 创建excel工作表
			wb.setSheetName(0, "sheetFirst", (short) 1);

			createtHead(wb, sheet, tHeadCnName); // 创建列表头

			for (int i = 0; i < rowLEN; i++) { // 行
				HSSFRow rowl = sheet.createRow(row); // 创建excel表中的一行
				// 获取到当前行的数据
				String[] tempObj = (String[]) valueList.get(i);
				for (int j = 0; j < colLEN; j++) { // 列
					if (tHeadType == null) {
						createCell(wb, rowl, (short) j, tempObj[j], "string");
					} else {
						createCell(wb, rowl, (short) j, tempObj[j],
								tHeadType[j]);
					}
				}
				row++;
			}

		} catch (Exception e) {
			log.debug(e);
			e.printStackTrace();
		}
		return wb; 
	}

	/**
	 * 通过java的正则表达式来校验一个字符串是否是数字
	 * 
	 * @param con
	 * @return true表示是数字,false表示不是。
	 */
	public static boolean isDigit(String con) {
		if (con == null || con.trim().equals("")) {
			return false;
		} else {
			return con.matches("\\d+\\.?\\d*");
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -