POI匯出的通用類,希望可以幫助到大家

2021-09-24 23:25:28 字數 3148 閱讀 3489

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...