工作需要下载excel文件,使用poi做了一个ExcelUtils,是一个用来excel生成工具,功能比较基础,但也够用了,代码如下
<pre name="code" class="java">package com.hxt.common.internal.utils;
import java.util.Collection;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.WorkbookUtil;
import org.springframework.util.StringUtils;
import com.hxt.common.internal.exception.BlankArgumentException;
public class CopyOfExcelUtils {
/**
* 创建workbook对象
*
* @param workbookName
* 工作薄名称
* @param headers
* 表头
* @param datas
* 表数据
* @return Workbook 用headers和datas填充后的表格文件
* @throws BlankArgumentException
*/
public static Workbook createExcelFile(String workbookName, String[] headers, Collection<String[]> datas) throws BlankArgumentException {
if (StringUtils.isEmpty(workbookName)) {
throw new BlankArgumentException("outFilename is blank");
}
Workbook wb = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet) wb.createSheet(WorkbookUtil.createSafeSheetName(workbookName));
createHeaderRow(sheet, headers);
fillDatas(sheet, datas);
return wb;
}
private static void createHeaderRow(Sheet sheet, String[] headers) {
if (headers == null) {
return;
}
HSSFRow row = (HSSFRow) sheet.createRow(0);
for (int colIdx = 0; colIdx < headers.length; colIdx++) {
fillCellData(row, colIdx, headers[colIdx]);
}
}
private static void fillDatas(HSSFSheet sheet, Collection<String[]> datas) {
if (datas == null || datas.size() == 0) {
return;
}
int rowIdx = 0;
for (String[] dataArr : datas) {
rowIdx++;
HSSFRow hssfRow = sheet.createRow(rowIdx);
for (int colIdx = 0; colIdx < dataArr.length; colIdx++) {
fillCellData(hssfRow, colIdx, dataArr[colIdx]);
}
}
}
private static void fillCellData(HSSFRow hssfRow, int colIdx, String data) {
HSSFCell hssfCell = hssfRow.createCell(colIdx);
hssfCell.setCellValue(data);
}
}