由於近期專案要用到excel來轉存頁面中的表單資料,對poi操作excel進行了一番了解,寫了以下,但總覺的不是很好
1. workbook處理類
/**
* excel workbook工具類
* @author fuchengyong
* @version 1.0
*/public class excelworkbook
workbook = workbooktemp; }
public excelworkbook(string workbookname)
public string getworkbookname()
public void setworkbookname(string workbookname)
public hssfsheet getsheet()
/*** 用於stylutils的所需要的workbook必須項所做的處理
* @return
*/public static hssfworkbook getworkbook()
public static void setworkbook(hssfworkbook workbook)
/*** @param excelname
*/public void writerfilestream(string excelname) catch (filenotfoundexception e) catch (ioexception e) finally
} catch (ioexception e)
} }}
2. excel row工具類
/**
* excel row工具類
* @author fuchengyong
* @version 1.0
*/public class excelsheetrow
public static hssfsheet sheet = null;
/*** 設定當前sheet名字
*/private static string sheetname = null;
private static hssfrow row = null;
/*** 建立當前標題行
* @param sheet
* @return
*/public static hssfrow createcurrsheettitle(excelworkbook work)
/*** 建立當前excel記錄內容
* @param sheet
* @param i
* @return
*/public static hssfrow createcurrsheetrecord(excelworkbook work,int i)
public static string getsheetname()
public static void setsheetname(string sheetname)
}
3. excel cell工具類
/**
* excel cell工具類
* @author fuchengyong
* @version 1.0
*/public class excelsheetcell }
/*** 用於生成excel當前記錄內容,標題除外
* @param sheet [當前工作表單]
* @param beanlist [當前資料列表,i=object]
* @param style [當前單元格風格]
*/public static void createcurrrowrecord(excelsheetrow sheetrow,excelworkbook work,list beanlist,hssfcellstyle style)
} }/**
* 需要以陣列的方式提供當前每條記錄
* 通過陣列自動判斷有多少列,生成當前行
*/private static void createexcelcell(hssfrow row, object obj,hssfcellstyle style)
} catch (nullpointerexception e)
}} catch (exception ex)
}}
4. excel style風格工具類
/**
* excel style風格工具類
* @author fuchengyong
* @version 1.0
*/public class excelcellstyleutils
/*** 超連結樣式
* @return hssfcellstyle
*/private static hssfcellstyle linkstyle(hssfworkbook work)
/**s
* 單元格樣式
* @return hssfcellstyle
*/private static hssfcellstyle namestyle(hssfworkbook work)
/*** 時間樣式
* @return hssfcellstyle
*/private static hssfcellstyle datastyle(hssfworkbook work)
/*** 標題樣式
* @return hssfcellstyle
*/private static hssfcellstyle titlestyle(hssfworkbook work)
}
5. 建立excel工廠類
/**
* 建立excel工具類
* @author fuchengyong
* */
public class excelutilfactory
excelrequest = request;
excelresponse = response;
return instance; }
public static void outputexcel(string excelname, list list, string firstrowvalue)
private static string getexcelrealpath(string excelname)
excelname = realpath+ "\\" + excelname+".xls";
return excelname;
} private static void downloadfile(string strfilename)
// 取得檔案的絕對路徑
file excelfile = getexceldownloadpath(strfilename);
putresponsestream(strfilename, excelfile);
} catch (ioexception e) }
private static file getexceldownloadpath(string excelname)
//用傳入引數的判斷
private static boolean excelfilenotfund(string strfilename)
/***
* @param strfilename : 檔名稱
* @param excelname : 檔案的相對路徑或絕對路徑
* @throws unsupportedencodingexception
* @throws filenotfoundexception
* @throws ioexception
*/private static void putresponsestream(string strfilename, file excelname)
throws unsupportedencodingexception, filenotfoundexception,
ioexception }
public static void main(string args)
outputexcel("今天測試_factory", beanlist, exceltitle);
long endtime = system.currenttimemillis();
system.out.println("測試55000,總計"+(endtime-begintime)/1000+"秒,用時");
}}
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最全工具類
1 建立乙個excel 注意在設定單元格的先關資訊時一定要 cell2.setcellstyle style2 這種形式才能讓設定起作用 hssfworkbook workbook new hssfworkbook 建立工作薄物件,這裡也可以設定sheet的name hssfsheet sheet1...