- 導(dǎo)出方法接收一個(gè)list集合,和一個(gè)Class類型,和HttpServletResponse 對(duì)象
- 導(dǎo)出是可能會(huì)有下拉列表,所以需要一個(gè)map存儲(chǔ)下拉列表數(shù)據(jù)源,傳入?yún)?shù)后只需一行代碼即可導(dǎo)出
- 導(dǎo)入方法需要傳入file文件,以及一個(gè)Class類型,導(dǎo)入之后將會(huì)返回一個(gè)list集合,里面的對(duì)象就是傳入類型的對(duì)象,傳入?yún)?shù)后只需一行代碼即可導(dǎo)入
實(shí)現(xiàn)過程:
首先需要?jiǎng)?chuàng)建三個(gè)注解 一個(gè)是EnableExport ,必須有這個(gè)注解才能導(dǎo)出
/** *設(shè)置允許導(dǎo)出 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public@interfaceEnableExport{ StringfileName(); } 然后就是EnableExportField,有這個(gè)注解的字段才會(huì)導(dǎo)出到Excel里面,并且可以設(shè)置列寬。
/** *設(shè)置該字段允許導(dǎo)出 *并且可以設(shè)置寬度 */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public@interfaceEnableExportField{ intcolWidth()default100; StringcolName(); } 再就是ImportIndex,導(dǎo)入的時(shí)候設(shè)置Excel中的列對(duì)應(yīng)的序號(hào)
/** *導(dǎo)入時(shí)索引 */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public@interfaceImportIndex{ intindex(); } 注解使用示例
三個(gè)注解創(chuàng)建好之后就需要開始操作Excel了
首先,導(dǎo)入方法。在后臺(tái)接收到前端上傳的Excel文件之后,使用poi來(lái)讀取Excel文件。擴(kuò)展:接私活 我們根據(jù)傳入的類型上面的字段注解的順序來(lái)分別為不同的字段賦值,然后存入集合中,再返回 代碼如下:
/** *將Excel轉(zhuǎn)換為對(duì)象集合 *@paramexcelExcel文件 *@paramclazzpojo類型 *@return */ publicstaticList
- 建立一張sheet表
- 設(shè)置標(biāo)的行高和列寬
- 繪制標(biāo)題和表頭
- 寫入數(shù)據(jù)到Excel
- 創(chuàng)建下拉列表

- 寫入文件到response
下面是一些自定義方法的代碼
/** *獲取一個(gè)基本的帶邊框的單元格 *@paramworkbook *@return */ privatestaticHSSFCellStylegetBasicCellStyle(HSSFWorkbookworkbook){ HSSFCellStylehssfcellstyle=workbook.createCellStyle(); hssfcellstyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); hssfcellstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); hssfcellstyle.setBorderRight(HSSFCellStyle.BORDER_THIN); hssfcellstyle.setBorderTop(HSSFCellStyle.BORDER_THIN); hssfcellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); hssfcellstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); hssfcellstyle.setWrapText(true); returnhssfcellstyle; } /** *獲取帶有背景色的標(biāo)題單元格 *@paramworkbook *@return */ privatestaticHSSFCellStylegetTitleCellStyle(HSSFWorkbookworkbook){ HSSFCellStylehssfcellstyle=getBasicCellStyle(workbook); hssfcellstyle.setFillForegroundColor((short)HSSFColor.CORNFLOWER_BLUE.index);//設(shè)置背景色 hssfcellstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); returnhssfcellstyle; } /** *創(chuàng)建一個(gè)跨列的標(biāo)題行 *@paramworkbook *@paramhssfRow *@paramhssfcell *@paramhssfsheet *@paramallColNum *@paramtitle */ privatestaticvoidcreateTitle(HSSFWorkbookworkbook,HSSFRowhssfRow,HSSFCellhssfcell,HSSFSheethssfsheet,intallColNum,Stringtitle){ //在sheet里增加合并單元格 CellRangeAddresscra=newCellRangeAddress(0,0,0,allColNum); hssfsheet.addMergedRegion(cra); //使用RegionUtil類為合并后的單元格添加邊框 RegionUtil.setBorderBottom(1,cra,hssfsheet,workbook);//下邊框 RegionUtil.setBorderLeft(1,cra,hssfsheet,workbook);//左邊框 RegionUtil.setBorderRight(1,cra,hssfsheet,workbook);//有邊框 RegionUtil.setBorderTop(1,cra,hssfsheet,workbook);//上邊框 //設(shè)置表頭 hssfRow=hssfsheet.getRow(0); hssfcell=hssfRow.getCell(0); hssfcell.setCellStyle(getTitleCellStyle(workbook)); hssfcell.setCellType(HSSFCell.CELL_TYPE_STRING); hssfcell.setCellValue(title); } /** *設(shè)置表頭標(biāo)題欄以及表格高度 *@paramworkbook *@paramhssfRow *@paramhssfcell *@paramhssfsheet *@paramcolNames */ privatestaticvoidcreateHeadRow(HSSFWorkbookworkbook,HSSFRowhssfRow,HSSFCellhssfcell,HSSFSheethssfsheet,List
使用實(shí)例
導(dǎo)出數(shù)據(jù)
https://github.com/xyz0101/excelutils
審核編輯 :李倩
-
Excel
+關(guān)注
關(guān)注
4文章
226瀏覽量
56611 -
代碼
+關(guān)注
關(guān)注
30文章
4899瀏覽量
70639
原文標(biāo)題:注解+反射優(yōu)雅的實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出(通用版),飄了!
文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
使用Word/Excel管理需求的10個(gè)痛點(diǎn)及解決方案Perforce ALM

如何導(dǎo)出Excel文件 -- excel_hm介紹 ##三方SDK##
Simcenter FLOEFD EDA Bridge模塊:使用導(dǎo)入的詳細(xì)PCB設(shè)計(jì)和IC熱特性來(lái)簡(jiǎn)化熱分析

TSolidX應(yīng)用:液晶掩膜結(jié)構(gòu)GDSⅡ文件的生成和導(dǎo)出
和 Dr Peter 一起學(xué) KiCad 4.9~4.10:導(dǎo)出Gerber并下單(收到成品)

Allegro Skill封裝功能-導(dǎo)出device文件介紹與演示

使用插件將Excel連接到MySQL/MariaDB

適用于Oracle的SSIS數(shù)據(jù)流組件:提供快速導(dǎo)入及導(dǎo)出功能

Devart Excel的附加組件
迅為RK3568開發(fā)板EMMC鏡像導(dǎo)出打包update.img
SOLIDWORKS高級(jí)BOM及屬性批量導(dǎo)入工具
Kali Linux常用工具介紹
dubbo3.0 服務(wù)導(dǎo)入導(dǎo)出原理

評(píng)論