📄 excelcreate.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 + -