标签:
工作需要下载excel文件,使用poi做了一个ExcelUtils,是一个用来excel生成工具,功能比较基础,但也够用了,代码如下
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 ExcelUtils { /** * 创建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; } public static void createExcelFile(Workbook wb, String settleBatchNumber, String[] settleHeaders, String[] transHeaders, int startIndex, String[] settleData, Collection<String[]> transDatas) { HSSFSheet sheet = (HSSFSheet) wb.createSheet(WorkbookUtil.createSafeSheetName(settleBatchNumber)); createHeaderRow(sheet, settleHeaders, startIndex); fillDatas(sheet, settleData, startIndex); createHeaderRow(sheet, transHeaders, startIndex + 3); fillDatas(sheet, transDatas, startIndex + 3); } public static Workbook createExcelFile(String workbookName, String[] headersSettle, String[] headersTrans, Collection<String[]> datasSettle, Collection<String[]> datasTrans) throws BlankArgumentException { if (StringUtils.isEmpty(workbookName)) { throw new BlankArgumentException("outFilename is blank"); } Workbook wb = new HSSFWorkbook(); HSSFSheet sheetSettle = (HSSFSheet) wb.createSheet(WorkbookUtil.createSafeSheetName(workbookName)); createHeaderRow(sheetSettle, headersSettle); fillDatas(sheetSettle, datasSettle); createHeaderRow(sheetSettle, headersTrans, datasSettle.size() + 3); fillDatas(sheetSettle, datasTrans, datasSettle.size() + 3); 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 createHeaderRow(Sheet sheet, String[] headers, int index) { if (headers == null) { return; } HSSFRow row = (HSSFRow) sheet.createRow(index); 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 fillDatas(HSSFSheet sheet, Collection<String[]> datas, int rowIdx) { if (datas == null || datas.size() == 0) { return; } 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 fillDatas(HSSFSheet sheet, String[] datas, int rowIdx) { if (datas == null || datas.length == 0) { return; } rowIdx++; HSSFRow hssfRow = sheet.createRow(rowIdx); for (int colIdx = 0; colIdx < datas.length; colIdx++) { fillCellData(hssfRow, colIdx, datas[colIdx]); } } private static void fillCellData(HSSFRow hssfRow, int colIdx, String data) { HSSFCell hssfCell = hssfRow.createCell(colIdx); hssfCell.setCellValue(data); } }
标签:
原文地址:http://blog.csdn.net/ro_wsy/article/details/44454431