Java使用poi生成Excel文件

来源:互联网 发布:淘宝唯一店铺号选靓号 编辑:程序博客网 时间:2024/06/07 07:51

1。

package com.jnpc.protect.radiation.action;import java.io.FileOutputStream;import java.io.IOException;import net.sf.json.JSONArray;import net.sf.json.JSONObject;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.ss.usermodel.Cell;/** * 生成excel * 使用的是HSSFWorkbook,仅能生成xls格式的excel * 在创建存储excel文件流的时候注意不能用.xlsx的扩展名 * @author Uself 2017-10-12 下午4:21:43 * @seehttp://www.cnblogs.com/yxth/p/6495244.html * http://blog.csdn.net/preterhuman_peak/article/details/40615303 */public class CreateExcel {//excel表头名称private static String[] COLUMN_NAMES = {"ID", "姓名", "年龄", "性别"};//填充数据的keyprivate static String[] COLUMNS = {"id", "name", "age", "sex"};public static void main(String[] args) {JSONArray ary = new JSONArray();JSONObject obj = new JSONObject();JSONObject obj2 = new JSONObject();JSONObject obj3 = new JSONObject();obj.put("id", "1");obj.put("name", "小明");obj.put("age", "18");obj.put("sex", "男");obj2.put("id", "2");obj2.put("name", "小华");obj2.put("age", "20");obj2.put("sex", "男");obj3.put("id", "3");obj3.put("name", "小丽");obj3.put("age", "18");obj3.put("sex", "女");ary.add(obj);ary.add(obj2);ary.add(obj3);createExcel(ary, "第一页", "D:/testCreateExcel.xls");}/** * 生成excel表格 * @param jsonArray填充excel的对象,可以灵活的修改成List<T> * @param sheetNamesheet页的名字 * @param savePathexcel保存的路径 D:/text.xls */public static void createExcel(JSONArray jsonArray, String sheetName, String savePath){FileOutputStream out = null;try {//创建工作簿HSSFWorkbook workbook = new HSSFWorkbook();//创建sheetHSSFSheet sheet = createSheet(workbook, sheetName);//创建单元格样式HSSFCellStyle style = createCellStyle(workbook);//创建头部createHead(sheet, style);//创建主体内容createMainContent(sheet, style, jsonArray);out = new FileOutputStream(savePath);workbook.write(out);} catch (Exception e) {e.printStackTrace();System.out.println("======e========" + e.getMessage());} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}}/** * 创建sheet * @param workbook工作簿 * @param sheetNamesheet名字 * @return */public static HSSFSheet createSheet(HSSFWorkbook workbook, String sheetName){HSSFSheet sheet = null;//2创建sheet表格sheet = workbook.createSheet(sheetName);                //设置所有的单元格格式                sheet.setDefaultColumnWidth(20);                //单独设置时必须是256的倍数                //sheet.setColumnWidth(0,5120);                  //sheet.setColumnWidth(1,5120);                  //sheet.setColumnWidth(2,25600);                return sheet;}/** * 创建单元格样式 * @param workbook工作簿 * @return */public static HSSFCellStyle createCellStyle(HSSFWorkbook workbook){HSSFCellStyle style = null;//1创建文字样式HSSFFont font = workbook.createFont();//设置文字字体font.setFontName("宋体");//设置文字大小font.setFontHeightInPoints((short) 10);//2.创建单元格样式style = workbook.createCellStyle();// 左右居中  style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  // 上下居中style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置边框大小style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);//3.将文字样式应用到单元格中style.setFont(font);return style;}/** * 设置excel头部 * @param sheet * @param style */public static void createHead(HSSFSheet sheet, HSSFCellStyle style){HSSFRow row = sheet.createRow(0);for(int i = 0; i < COLUMN_NAMES.length; i ++){Cell cell = row.createCell(i);cell.setCellValue(COLUMN_NAMES[i]);cell.setCellStyle(style);}}/** * 创建主题内容 * @param sheetsheet表格 * @param style单元格样式 * @param jsonArrayjson数据对象 */public static void createMainContent(HSSFSheet sheet, HSSFCellStyle style, JSONArray jsonArray){/* * 遍历数据创建相应的行以及单元格 * 第一行已经创建,从第二行开始创建,下标为1 */for(int i = 1; i <= jsonArray.size(); i ++){//创建行HSSFRow row = sheet.createRow(i);JSONObject jsonObject = jsonArray.getJSONObject(i - 1);for(int j = 0; j < COLUMNS.length; j ++){Cell cell = row.createCell(j);cell.setCellValue(jsonObject.getString(COLUMNS[j]));cell.setCellStyle(style);}}}}


原创粉丝点击