最近在做乙個專案,其中有部分是關於匯出excel,之前去的公司匯出excel都是已經封裝好了的,現在從頭開始寫。用的是比較常用的poi,廢話不多說。
用的框架是ssh,poi的版本是3.17,poi-3.17.jar
功能介紹:匯出查詢結果的報表,如下圖為資料庫隨便填的資料,在頁面上做查詢,從頁面上匯出excel
前端:
href="../export.do"
class="easyui-linkbutton">匯出a>
後台:
//匯出excel
//建立hssfworkbook物件(excel的文件物件)
hssfworkbook wb =
new hssfworkbook();
//建立新的sheet物件(excel的表單)
hssfsheet sheet=wb.createsheet(
"報表");
//在sheet裡建立第一行,引數為行索引(excel的行),可以是0~65535之間的任何乙個
hssfrow row1=sheet.createrow(
0);//建立單元格(excel的單元格,引數為列索引,可以是0~255之間的任何乙個
hssfcell cell=row1.createcell(
0);// 1.生成字型物件
hssffont font = wb.createfont();
font.setfontheightinpoints((
short)
12);
font.setfontname(
"新宋體");
// 2.生成樣式物件,這裡的設定居中樣式和版本有關,我用的poi用hssfcellstyle.align_center會報錯,所以用下面的
hssfcellstyle style = wb.createcellstyle();
// style.setalignment(hssfcellstyle.align_center);//設定居中樣式
style.setfont(font);
// 呼叫字型樣式物件
style.setwraptext(
true);
style.setalignment(horizontalalignment.center);
//設定居中樣式
// 3.單元格應用樣式
cell.setcellstyle(style);
//設定單元格內容
cell.setcellvalue(
"報表");
//合併單元格cellrangeaddress構造引數依次表示起始行,截至行,起始列, 截至列
sheet.addmergedregion(
new cellrangeaddress(
0,0,
0,9));
//在sheet裡建立第二行
hssfrow row2=sheet.createrow(
1);//建立單元格並設定單元格內容及樣式
hssfcell cell0=row2.createcell(
0);cell0.setcellstyle(style);
cell0.setcellvalue(
"住院號");
hssfcell cell1=row2.createcell(
1);cell1.setcellstyle(style);
cell1.setcellvalue(
"身份證號");
hssfcell cell2=row2.createcell(
2);cell2.setcellstyle(style);
cell2.setcellvalue(
"姓名");
hssfcell cell3=row2.createcell(
3);cell3.setcellstyle(style);
cell3.setcellvalue(
"性別");
hssfcell cell4=row2.createcell(
4);cell4.setcellstyle(style);
cell4.setcellvalue(
"總金額");
hssfcell cell5=row2.createcell(
5);cell5.setcellstyle(style);
cell5.setcellvalue(
"基本醫療保險賠付金額");
hssfcell cell6=row2.createcell(
6);cell6.setcellstyle(style);
cell6.setcellvalue(
"補充醫療賠付金額");
hssfcell cell7=row2.createcell(
7);cell7.setcellstyle(style);
cell7.setcellvalue(
"其他賠付金額");
hssfcell cell8=row2.createcell(
8);cell8.setcellstyle(style);
cell8.setcellvalue(
"總賠付金額");
hssfcell cell9=row2.createcell(
9);cell9.setcellstyle(style);
cell9.setcellvalue(
"總自費金額");
//單元格寬度自適應
sheet.autosizecolumn((
short)
3);sheet.autosizecolumn((
short)
4);sheet.autosizecolumn((
short)
5);sheet.autosizecolumn((
short)
6);sheet.autosizecolumn((
short)
7);sheet.autosizecolumn((
short)
8);sheet.autosizecolumn((
short)
9);//寬度自適應可自行選擇自適應哪一行,這裡寫在前面的是適應第二行,寫在後面的是適應第三行
for (
int i =
0; i < solist.size(); i++)
//輸出excel檔案
outputstream output=response.getoutputstream();
response.reset();
response.setheader(
"content-disposition",
"attachment; filename=report.xls");
//檔名這裡可以改
response.setcontenttype(
wb.write(output);
output.close();
return
null;
}最終結果
JAVA實現Excel匯入匯出
建立工程匯入jar包 jxl建立excel檔案 author c public class jxlexpexcel 建立excel檔案 file file new file jxl test.xls try 追加資料 for int i 1 i 10 i 寫入資料 workbook.write wo...
java實現excel匯出例項
宣告下 list是前面操作查詢的結果集。string path request.getsession getservletcontext getrealpath string name 測試 tools.getdatestr new date yyyymmddhhmmss xls xlstransf...
java實現excel的匯入匯出
最進接觸到excel匯入匯出。可以使用poi.jar實現。下面是乙個hello word import org.apache.poi.hssf.usermodel.hssfcell import org.apache.poi.hssf.usermodel.hssfrow import org.apa...