Excel导出共通
来源:互联网 发布:php soap扩展 编辑:程序博客网 时间:2024/06/05 15:34
import java.io.OutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
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.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* 导出Excel共通
* @author Lee
*/
public class ExportExcelUtil {
/** Excel表格类型(97-2003版本) */public static final String ContentType03 = "application/vnd.ms-excel";/** Excel表格类型(07版本以上) */public static final String ContentType07 = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";/** excel数据的抬头栏,即名称栏 */private String[] fieldName = null;/** excel导出的实际数据 */private String[][] fieldData = null;/** Excel文件对象 */private Workbook workBook = null;/** 工作表名 */private String sheetName = null;/** * 有参构造器,限定了使用此类时,必须首先构建好两个list参数,并将所需数据放入上述两个list。 * * @param fieldName * @param fieldData * : 数据集合,fieldData这个可以使用泛型约束List<List<Object>> */public ExportExcelUtil(String[] fieldName, String[][] fieldData, String sheetName) { this.fieldName = fieldName; this.fieldData = fieldData; this.sheetName = sheetName;}/** * 生成Excel表格(97-2003版本) * * @return HSSFWorkbook */public Workbook createHSSWorkbook() { workBook = new HSSFWorkbook();// 创建一个工作簿 CellStyle headStyle = getHeadStyle(workBook);// 表头样式 CellStyle bodyStyle = getBodyStyle(workBook);// 表体样式 Sheet sheet = workBook.createSheet(sheetName);// 创建工作表 Row headRow = sheet.createRow(0); // 创建第一栏,抬头栏 for (int i = 0; i < fieldName.length; i++) { Cell cell = headRow.createCell(0);// 创建抬头栏单元格 cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String //设置单元格格式 cell.setCellStyle(headStyle);// 设置表头单元格样式 // 将数据填入单元格 if (StringUtil.isNotBlank(fieldName[i])) { cell.setCellValue(fieldName[i]); } else { cell.setCellValue("-"); } } // 创建数据栏单元格并填入数据 for (int j = 0; j < fieldData.length; j++) {// 遍历 String[] childArray = fieldData[j]; Row bodyRow = sheet.createRow(j + 1);// 创建数据行 Cell cell = null; for (int n = 0; n < childArray.length; n++) { cell = bodyRow.createCell(n); cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String cell.setCellStyle(bodyStyle);// 设置表体单元格样式 if (StringUtil.isNotBlank(childArray[n])) { cell.setCellValue(childArray[n]); } else { cell.setCellValue(""); } } } return workBook;}/** * 生成Excel表格(07版本以上) * * @return XSSFWorkbook */public Workbook createXSSWorkbook() { workBook = new XSSFWorkbook();// 创建一个工作簿 CellStyle headStyle = getHeadStyle(workBook);// 表头样式 CellStyle bodyStyle = getBodyStyle(workBook);// 表体样式 Sheet sheet = workBook.createSheet(sheetName);// 创建工作表 Row headRow = sheet.createRow(0); // 创建第一栏,抬头栏 for (int i = 0; i < fieldName.length; i++) { Cell cell = headRow.createCell(0);// 创建抬头栏单元格 cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String //设置单元格格式 cell.setCellStyle(headStyle);// 设置表头单元格样式 // 将数据填入单元格 if (StringUtil.isNotBlank(fieldName[i])) { cell.setCellValue(fieldName[i]); } else { cell.setCellValue("-"); } } // 创建数据栏单元格并填入数据 for (int j = 0; j < fieldData.length; j++) {// 遍历 String[] childArray = fieldData[j]; Row bodyRow = sheet.createRow(j + 1);// 创建数据行 Cell cell = null; for (int n = 0; n < childArray.length; n++) { cell = bodyRow.createCell(n); cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String // //设置单元格格式 cell.setCellStyle(bodyStyle);// 设置表体单元格样式 if (StringUtil.isNotBlank(childArray[n])) { cell.setCellValue(childArray[n]); } else { cell.setCellValue(""); } } } return workBook;}/** * 设置表头的单元格样式 * * @return */private CellStyle getHeadStyle(Workbook wb) { // 创建单元格样式 CellStyle cellStyle = wb.createCellStyle(); // 设置单元格的背景颜色为淡蓝色 cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index); cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); // 设置单元格居中对齐 cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 设置单元格垂直居中对齐 cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); // 创建单元格内容显示不下时自动换行 cellStyle.setWrapText(true); // 设置单元格字体样式 Font font = wb.createFont(); // 设置字体加粗 font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); // TODO : 此处有疑问,会不会引发异常 font.setFontHeight((short) 200); cellStyle.setFont(font); // 设置单元格边框为细线条 cellStyle.setBorderLeft(CellStyle.BORDER_THIN); cellStyle.setBorderBottom(CellStyle.BORDER_THIN); cellStyle.setBorderRight(CellStyle.BORDER_THIN); cellStyle.setBorderTop(CellStyle.BORDER_THIN); return cellStyle;}/** * 设置表体的单元格样式 * * @return */private CellStyle getBodyStyle(Workbook wb) { // 创建单元格样式 CellStyle cellStyle = wb.createCellStyle(); // 设置单元格居中对齐 cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 设置单元格垂直居中对齐 cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); // 创建单元格内容显示不下时自动换行 cellStyle.setWrapText(true); // 设置单元格字体样式 Font font = wb.createFont(); // 设置字体加粗 font.setBoldweight(Font.BOLDWEIGHT_BOLD); font.setFontName("宋体"); // TODO : 此处有疑问,会不会引发异常 font.setFontHeight((short) 200); cellStyle.setFont(font); // 设置单元格边框为细线条 cellStyle.setBorderLeft(CellStyle.BORDER_THIN); cellStyle.setBorderBottom(CellStyle.BORDER_THIN); cellStyle.setBorderRight(CellStyle.BORDER_THIN); cellStyle.setBorderTop(CellStyle.BORDER_THIN); return cellStyle;}/** * 将信息写入输出流 * * @param outputStream * @throws Exception */public void exportExcel(OutputStream outputStream) throws Exception { // 默认生成07以上版本的Excel workBook = createXSSWorkbook(); workBook.write(outputStream); try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); }}
}
0 0
- Excel导出共通
- poi开发Excel的共通库
- 导出EXCEL
- Excel导出
- 导出Excel
- 导出EXCEL
- 导出Excel
- EXCEL导出
- 导出Excel
- 导出excel
- 导出excel
- EXCEL导出
- 导出excel
- 导出Excel
- Excel导出。
- 导出excel
- Excel 导出
- 导出excel
- 学习编辑C好处
- LeetCode(136)(137) Single Number I II
- Reorder List
- 毛玻璃效果
- hdu 5365 Run 几何 判定四边形
- Excel导出共通
- python中的类编程
- VS Help Viewer 显示内容为HTML源码的问题
- 集群通信组件tribes之应用程序处理入口
- objective-C 中两种实现动画的方法(转)
- java中clone源码解析
- linux下打patch
- ObservableCollection的神奇用法
- 深入了解Intel保护模式