#### 2.2 注解
##### 注解介紹
?autopoi起因就是Excel的導入導出,最初的模板是實體和Excel的對應,model--row,filed--col 這樣利用注解我們可以和容易做到excel到導入導出 經過一段時間發展,現在注解有5個類分別是
* @Excel 作用到filed上面,是對Excel一列的一個描述
* @ExcelCollection 表示一個集合,主要針對一對多的導出,比如一個老師對應多個科目,科目就可以用集合表示
* @ExcelEntity 表示一個繼續深入導出的實體,但他沒有太多的實際意義,只是告訴系統這個對象里面同樣有導出的字段
* @ExcelIgnore 和名字一樣表示這個字段被忽略跳過這個導導出
* @ExcelTarget 這個是作用于最外層的對象,描述這個對象的id,以便支持一個對象可以針對不同導出做出不同處理
注解中的ID的用法 這個ID算是一個比較獨特的例子,比如
~~~
@ExcelTarget("teacherEntity")
public class TeacherEntity implements java.io.Serializable {
/** name */
@Excel(name = "主講老師_teacherEntity,代課老師_absent", orderNum = "1", mergeVertical = true,needMerge=true,isImportField = "true_major,true_absent")
private String name;
~~~
這里的@ExcelTarget 表示使用teacherEntity這個對象是可以針對不同字段做不同處理 同樣的ExcelEntity 和ExcelCollection 都支持這種方式 當導出這對象時,name這一列對應的是主講老師,而不是代課老師還有很多字段都支持這種做法
##### @Excel
這個是必須使用的注解,如果需求簡單只使用這一個注解也是可以的,涵蓋了常用的Excel需求,需要大家熟悉這個功能,主要分為基礎,圖片處理,時間處理,合并處理幾塊,name\_id是上面講的id用法,這里就不累言了
| 屬性 | 類型 | 默認值 | 功能 |
| --- | --- | --- | --- |
| name | String| null| 列名,支持name\_id|
| needMerge | boolean| fasle | 是否需要縱向合并單元格(用于含有list中,單個的單元格,合并list創建的多個row) |
| orderNum| String| "0"| 列的排序,支持name\_id|
| replace | String\[\]| {} | 值得替換 導出是{a\_id,b\_id} 導入反過來|
| savePath| String| "upload" | 導入文件保存路徑,如果是圖片可以填寫,默認是upload/className/ IconEntity這個類對應的就是upload/Icon/|
| type | int| 1| 導出類型 1 是文本 2 是圖片,3 是函數,4 是數字 默認是文本|
| width| double| 10| 列寬|
| height | double| 10| **列高,后期打算統一使用@ExcelTarget的height,這個會被廢棄,注意** |
| isStatistics | boolean| fasle| 自動統計數據,在追加一行統計,把所有數據都和輸出 **這個處理會吞沒異常,請注意這一點**|
| isHyperlink | boolean| false | 超鏈接,如果是需要實現接口返回對象|
|isImportField| boolean | true| 校驗字段,看看這個字段是不是導入的Excel中有,如果沒有說明是錯誤的Excel,讀取失敗,支持name\_id|
| exportFormat| String| ""| 導出的時間格式,以這個是否為空來判斷是否需要格式化日期|
| importFormat| String| ""| 導入的時間格式,以這個是否為空來判斷是否需要格式化日期 |
| format | String | ""| 時間格式,相當于同時設置了exportFormat 和 importFormat|
| databaseFormat | String| "yyyyMMddHHmmss"| 導出時間設置,如果字段是Date類型則不需要設置 數據庫如果是string 類型,這個需要設置這個數據庫格式,用以轉換時間格式輸出|
| numFormat| String | ""| 數字格式化,參數是Pattern,使用的對象是DecimalFormat|
| imageType| int | 1| 導出類型 1 從file讀取 2 是從數據庫中讀取 默認是文件 同樣導入也是一樣的|
| suffix| String| "" | 文字后綴,如% 90 變成90%|
| isWrap| boolean | true| 是否換行 即支持\\n |
| mergeRely| int\[\]| {}| 合并單元格依賴關系,比如第二列合并是基于第一列 則{0}就可以了|
| mergeVertical| boolean| fasle| 縱向合并內容相同的單元格 |
| fixedIndex| int | \-1 | 對應excel的列,忽略名字,**首列index從0開始** |
| isColumnHidden| boolean| false| 導出隱藏列|
##### @ExcelTarget
限定一個到處實體的注解,以及一些通用設置,作用于最外面的實體
| 屬性 | 類型 | 默認值 | 功能 |
| --- | --- | --- | --- |
| value| String | null| 定義ID |
| height| double| 10| 設置行高|
| fontSize| short| 11 | 設置文字大小|
##### @ExcelEntity
標記是不是導出excel 標記為實體類,一遍是一個內部屬性類,標記是否繼續穿透,可以自定義內部id
| 屬性 | 類型 | 默認值 | 功能 |
| --- | --- | --- | --- |
| id | String|null| 定義ID |
| name| String|null| 合并表頭文本 |
| show| String|false| 是否顯示合并表頭 |
##### @ExcelCollection
一對多的集合注解,用以標記集合是否被數據以及集合的整體排序
| 屬性 | 類型 | 默認值 | 功能 |
| --- | --- | --- | --- |
| id | String| null| 定義ID|
| name| String | null | 定義集合列名,支持nanm\_id |
| orderNum| int | 0| 排序,支持name\_id|
| type| Class| ArrayList.class| 導入時創建對象使用 |
##### @ExcelIgnore
忽略這個屬性,多使用需循環引用中,無需多解釋吧^^
- 1.前傳
- 1.1前言
- 1.2 Autopoi 介紹
- 1.3 使用
- 1.4 測試項目
- 1.5 快速文檔
- 1.6 示例
- 1.6.1 單表數據導出多表頭示例
- 單表數據多表頭導入注意bak
- 1.6.2 單表數據導出多sheet示例
- 1.6.3 excel根據模板導出
- 1.6.4 一對多導出needMerge示例
- 1.6.5 大數據導出示例
- 1.7 導出自定義選擇列導出
- 2. Excel 注解版
- 2.0 @excel注解的使用
- 2.1 Excel導入導出
- 2.2 注解
- 2.3 注解導出,導入
- 2.3.1 對象定義
- 2.3.2 集合定義
- 2.3.3 圖片的導出
- 2.3.4 Excel導入介紹
- 2.3.5 Excel導入小功能
- 2.3.6 圖片的導入
- 2.3.7 Excel多Sheet導出
- 2.4 注解變種-更自由的導出
- 2.5 Map導入,自由發揮
- 2.6 Excel的樣式自定義
- 2.7 如何自定義數據處理
- 2.8 Excel導入校驗(暫不支持)
- 2.9 Excel 大批量讀取
- 2.10 Excel大數據導出
- 2.11 groupname和ExcelEntity的name屬性
- 3. Excel 模板版
- 3.1 模板 指令介紹
- 3.2 基本導出
- 3.3 模板當中使用注解
- 3.4 圖片導出
- 3.5 橫向遍歷
- 4. Excel<->Html
- 4.1 Excel 的Html預覽
- 4.2 html轉Excel更神奇的導出
- 5. Word
- 5.1 word模板導出
- 6. PDF
- 7. Spring MVC
- 7.1 View 介紹
- 7.2 大數據導出View的用法
- 7.3 注解導出View用法
- 7.4 注解變種Map類型的導出View
- 7.5Excel模板導出View
- 7.6 PoiBaseView.render view的補救
- 8.問題歸檔
- 9.大數據量處理
- 10.autopoi升級4.0版本修改記錄