Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
sts网站
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyang
sts网站
Commits
eb4376b6
Commit
eb4376b6
authored
Oct 10, 2021
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Excel导入支持@Excels注解
parent
b1e5ebab
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
36 deletions
+34
-36
ExcelUtil.java
...n/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+34
-36
No files found.
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
View file @
eb4376b6
...
@@ -268,22 +268,15 @@ public class ExcelUtil<T>
...
@@ -268,22 +268,15 @@ public class ExcelUtil<T>
}
}
}
}
// 有数据时才处理 得到类的所有field.
// 有数据时才处理 得到类的所有field.
Field
[]
allFields
=
clazz
.
getDeclaredFields
();
List
<
Object
[]>
fields
=
this
.
getFields
();
// 定义一个map用于存放列的序号和field.
Map
<
Integer
,
Object
[]>
fieldsMap
=
new
HashMap
<
Integer
,
Object
[]>();
Map
<
Integer
,
Field
>
fieldsMap
=
new
HashMap
<
Integer
,
Field
>();
for
(
Object
[]
objects
:
fields
)
for
(
int
col
=
0
;
col
<
allFields
.
length
;
col
++)
{
{
Field
field
=
allFields
[
col
];
Excel
attr
=
(
Excel
)
objects
[
1
];
Excel
attr
=
field
.
getAnnotation
(
Excel
.
class
);
Integer
column
=
cellMap
.
get
(
attr
.
name
()
);
if
(
attr
!=
null
&&
(
attr
.
type
()
==
Type
.
ALL
||
attr
.
type
()
==
type
)
)
if
(
column
!=
null
)
{
{
// 设置类的私有字段属性可访问.
fieldsMap
.
put
(
column
,
objects
);
field
.
setAccessible
(
true
);
Integer
column
=
cellMap
.
get
(
attr
.
name
());
if
(
column
!=
null
)
{
fieldsMap
.
put
(
column
,
field
);
}
}
}
}
}
for
(
int
i
=
titleNum
+
1
;
i
<=
rows
;
i
++)
for
(
int
i
=
titleNum
+
1
;
i
<=
rows
;
i
++)
...
@@ -296,14 +289,15 @@ public class ExcelUtil<T>
...
@@ -296,14 +289,15 @@ public class ExcelUtil<T>
continue
;
continue
;
}
}
T
entity
=
null
;
T
entity
=
null
;
for
(
Map
.
Entry
<
Integer
,
Field
>
entry
:
fieldsMap
.
entrySet
())
for
(
Map
.
Entry
<
Integer
,
Object
[]
>
entry
:
fieldsMap
.
entrySet
())
{
{
Object
val
=
this
.
getCellValue
(
row
,
entry
.
getKey
());
Object
val
=
this
.
getCellValue
(
row
,
entry
.
getKey
());
// 如果不存在实例则新建.
// 如果不存在实例则新建.
entity
=
(
entity
==
null
?
clazz
.
newInstance
()
:
entity
);
entity
=
(
entity
==
null
?
clazz
.
newInstance
()
:
entity
);
// 从map中得到对应列的field.
// 从map中得到对应列的field.
Field
field
=
fieldsMap
.
get
(
entry
.
getKey
());
Field
field
=
(
Field
)
entry
.
getValue
()[
0
];
Excel
attr
=
(
Excel
)
entry
.
getValue
()[
1
];
// 取得类型,并根据对象类型设置值.
// 取得类型,并根据对象类型设置值.
Class
<?>
fieldType
=
field
.
getType
();
Class
<?>
fieldType
=
field
.
getType
();
if
(
String
.
class
==
fieldType
)
if
(
String
.
class
==
fieldType
)
...
@@ -363,7 +357,6 @@ public class ExcelUtil<T>
...
@@ -363,7 +357,6 @@ public class ExcelUtil<T>
}
}
if
(
StringUtils
.
isNotNull
(
fieldType
))
if
(
StringUtils
.
isNotNull
(
fieldType
))
{
{
Excel
attr
=
field
.
getAnnotation
(
Excel
.
class
);
String
propertyName
=
field
.
getName
();
String
propertyName
=
field
.
getName
();
if
(
StringUtils
.
isNotEmpty
(
attr
.
targetAttr
()))
if
(
StringUtils
.
isNotEmpty
(
attr
.
targetAttr
()))
{
{
...
@@ -610,8 +603,6 @@ public class ExcelUtil<T>
...
@@ -610,8 +603,6 @@ public class ExcelUtil<T>
{
{
Field
field
=
(
Field
)
os
[
0
];
Field
field
=
(
Field
)
os
[
0
];
Excel
excel
=
(
Excel
)
os
[
1
];
Excel
excel
=
(
Excel
)
os
[
1
];
// 设置实体类私有属性可访问
field
.
setAccessible
(
true
);
this
.
addCell
(
excel
,
row
,
vo
,
field
,
column
++);
this
.
addCell
(
excel
,
row
,
vo
,
field
,
column
++);
}
}
}
}
...
@@ -1164,7 +1155,17 @@ public class ExcelUtil<T>
...
@@ -1164,7 +1155,17 @@ public class ExcelUtil<T>
*/
*/
private
void
createExcelField
()
private
void
createExcelField
()
{
{
this
.
fields
=
new
ArrayList
<
Object
[]>();
this
.
fields
=
getFields
();
this
.
fields
=
this
.
fields
.
stream
().
sorted
(
Comparator
.
comparing
(
objects
->
((
Excel
)
objects
[
1
]).
sort
())).
collect
(
Collectors
.
toList
());
this
.
maxHeight
=
getRowHeight
();
}
/**
* 获取字段注解信息
*/
public
List
<
Object
[]>
getFields
()
{
List
<
Object
[]>
fields
=
new
ArrayList
<
Object
[]>();
List
<
Field
>
tempFields
=
new
ArrayList
<>();
List
<
Field
>
tempFields
=
new
ArrayList
<>();
tempFields
.
addAll
(
Arrays
.
asList
(
clazz
.
getSuperclass
().
getDeclaredFields
()));
tempFields
.
addAll
(
Arrays
.
asList
(
clazz
.
getSuperclass
().
getDeclaredFields
()));
tempFields
.
addAll
(
Arrays
.
asList
(
clazz
.
getDeclaredFields
()));
tempFields
.
addAll
(
Arrays
.
asList
(
clazz
.
getDeclaredFields
()));
...
@@ -1173,7 +1174,12 @@ public class ExcelUtil<T>
...
@@ -1173,7 +1174,12 @@ public class ExcelUtil<T>
// 单注解
// 单注解
if
(
field
.
isAnnotationPresent
(
Excel
.
class
))
if
(
field
.
isAnnotationPresent
(
Excel
.
class
))
{
{
putToField
(
field
,
field
.
getAnnotation
(
Excel
.
class
));
Excel
attr
=
field
.
getAnnotation
(
Excel
.
class
);
if
(
attr
!=
null
&&
(
attr
.
type
()
==
Type
.
ALL
||
attr
.
type
()
==
type
))
{
field
.
setAccessible
(
true
);
fields
.
add
(
new
Object
[]
{
field
,
attr
});
}
}
}
// 多注解
// 多注解
...
@@ -1181,14 +1187,17 @@ public class ExcelUtil<T>
...
@@ -1181,14 +1187,17 @@ public class ExcelUtil<T>
{
{
Excels
attrs
=
field
.
getAnnotation
(
Excels
.
class
);
Excels
attrs
=
field
.
getAnnotation
(
Excels
.
class
);
Excel
[]
excels
=
attrs
.
value
();
Excel
[]
excels
=
attrs
.
value
();
for
(
Excel
excel
:
excels
)
for
(
Excel
attr
:
excels
)
{
{
putToField
(
field
,
excel
);
if
(
attr
!=
null
&&
(
attr
.
type
()
==
Type
.
ALL
||
attr
.
type
()
==
type
))
{
field
.
setAccessible
(
true
);
fields
.
add
(
new
Object
[]
{
field
,
attr
});
}
}
}
}
}
}
}
this
.
fields
=
this
.
fields
.
stream
().
sorted
(
Comparator
.
comparing
(
objects
->
((
Excel
)
objects
[
1
]).
sort
())).
collect
(
Collectors
.
toList
());
return
fields
;
this
.
maxHeight
=
getRowHeight
();
}
}
/**
/**
...
@@ -1205,17 +1214,6 @@ public class ExcelUtil<T>
...
@@ -1205,17 +1214,6 @@ public class ExcelUtil<T>
return
(
short
)
(
maxHeight
*
20
);
return
(
short
)
(
maxHeight
*
20
);
}
}
/**
* 放到字段集合中
*/
private
void
putToField
(
Field
field
,
Excel
attr
)
{
if
(
attr
!=
null
&&
(
attr
.
type
()
==
Type
.
ALL
||
attr
.
type
()
==
type
))
{
this
.
fields
.
add
(
new
Object
[]
{
field
,
attr
});
}
}
/**
/**
* 创建一个工作簿
* 创建一个工作簿
*/
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment