public class poiutil}byte bytes = workbook.getbytes();
return new bytearrayinputstream(bytes);
}/**
* 匯出excle文件
** @param objlist : excel資料來源
* @param objclass : excel資料來源中的資料型別
* @param title : 新建sheet的名稱 ex: title = "員工表";
* @param strtitle : sheet各列的標題(第一行各列的名稱)ex: strtitle = "**,姓名";
* @param strbody : sheet各列的取值方法名(各列的值在objclass中get方法名稱) ex: strbody = "getcode,getname";
* @return
*/public static void createexcel(list objlist, class objclass, string title, string strtitle, string strbody, string path) catch (ioexception e)
}/**
* 初始化工作簿
** @param objlist : excel資料來源
* @param objclass : excel資料來源中的資料型別
* @param title : 新建sheet的名稱
* @param strtitle : sheet各列的標題(第一行各列的名稱)
* @param strbody : sheet各列的取值方法名(各列的值在objclass中get方法名稱)
*/private static hssfworkbook initworkbook(list objlist, class objclass, string title, string strtitle, string strbody) else
return workbook;
}/**
* 建立excel當前sheet頁的頭資訊
** @param sheet : excel工作簿的乙個sheet
* @param strtitle : sheet頭資訊列表(sheet第一行各列值)
*/private static void createtitle(hssfsheet sheet, string strtitle) }}
/*** 建立excel當前sheet頁的體資訊
** @param objlist : excel資料來源
* @param objclass : excel資料來源中的資料型別
* @param sheet : excel工作簿的sheet頁
* @param strbody : sheet各列的取值方法名(各列的值在objclass中get方法名稱)
*/private static void createbody(list objlist, class objclass, hssfsheet sheet, string strbody) else else
// 自適應寬度
string cellvalue = cell.getstringcellvalue();
if ((sheet.getcolumnwidth(strindex)) < cellvalue.getbytes().length * 400)
}} catch (exception e) }}
}}
}/**
* 建立excel當前sheet頁的體資訊,excel資料來源中的資料型別為map
* 暫不支援多級引用
** @param objlist : excel資料來源
* @param sheet : excel工作簿的sheet頁
* @param strbody : sheet各列對應至資料來源map中的鍵
*/private static void createbody4map(list objlist, hssfsheet sheet, string strbody) else
// 自適應寬度
string cellvalue = cell.getstringcellvalue();
if ((sheet.getcolumnwidth(strindex)) < cellvalue.getbytes().length * 400) }}
}/**
* 方法返回的是乙個物件的引用(如:gethomeplace.getname型別的方法序列)
* 按方法序列逐層呼叫直到最後放回基本型別的值
** @param targetmethod : obj物件所包含的方法列
* @param obj : 待處理的物件
* @return
*/private static string referenceinvoke(string targetmethod, object obj) catch (exception e)
// 如果方法序列沒到最後一節
if (targetmethod.contains(".")) else catch (exception e) }}
public static hssfcellstyle setheadstyle(hssfworkbook workbook)
headfont.setcolor(hssfcolor.hssfcolorpredefined.violet.getindex());
headfont.setfontheightinpoints((short) 12);
headfont.setbold(true);
// 把字型應用到當前的樣樣式
headstyle.setfont(headfont);
return headstyle;
}public static hssfcellstyle setbodystyle(hssfworkbook workbook)
bodyfont.setbold(false);
// 把字型應用到當前的樣樣式
bodystyle.setfont(bodyfont);
return bodystyle;
}}
poi匯出excel工具類
poi版本 org.apache.poi poi3.17 org.apache.poi poi ooxml 3.17 excel匯出工具類 author zsc datetime 2017年12月14日 下午8 01 32 建立工作簿 param sheetnames param headnames...
POI匯出Excel工具類 補充
在實際使用中,發現用xssfworkbook建立xlsx檔案,如果資料量比較大,很容易出現占用cpu過高,記憶體溢位的情況。查了相關資料後,才發現官方推薦處理大量資料使用sxssfworkbook 在poi3.8之後才有 下面貼下自己寫的 public static void sxssfoutput...
POI 匯出匯入工具類介紹
代表乙個excel檔案 建立方法 hssfworkbook wb new hssfworkbook 代表乙個excel表 乙個excel檔案可以有多個sheet表!建立方法 先建立乙個excel檔案 hssfworkbook wb new hssfworkbook excel檔案 hssfsheet...