Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fgqyxxlr
Overview
Overview
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
yaru
fgqyxxlr
Commits
174ed020
Commit
174ed020
authored
Aug 04, 2019
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Excel支持设置导出类型&更换样式
parent
e944409f
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
135 additions
and
56 deletions
+135
-56
ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
+22
-0
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+83
-34
ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java
+2
-1
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
+2
-1
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysDictData.java
+3
-2
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysDictType.java
+2
-1
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java
+11
-10
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
+2
-1
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
+3
-2
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRole.java
+3
-3
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUser.java
+2
-1
No files found.
ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
View file @
174ed020
...
...
@@ -30,6 +30,11 @@ public @interface Excel
public
String
readConverterExp
()
default
""
;
/**
* 导出类型(0数字 1字符串)
*/
public
ColumnType
cellType
()
default
ColumnType
.
STRING
;
/**
* 导出时在excel中每个列的高度 单位为字符
*/
public
double
height
()
default
14
;
...
...
@@ -89,4 +94,20 @@ public @interface Excel
return
this
.
value
;
}
}
public
enum
ColumnType
{
NUMERIC
(
0
),
STRING
(
1
);
private
final
int
value
;
ColumnType
(
int
value
)
{
this
.
value
=
value
;
}
public
int
value
()
{
return
this
.
value
;
}
}
}
\ No newline at end of file
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
View file @
174ed020
...
...
@@ -17,8 +17,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.UUID
;
import
org.apache.poi.hssf.usermodel.HSSFDateUtil
;
import
org.apache.poi.hssf.usermodel.HSSFFont
;
import
org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined
;
import
org.apache.poi.ss.usermodel.BorderStyle
;
import
org.apache.poi.ss.usermodel.Cell
;
import
org.apache.poi.ss.usermodel.CellStyle
;
import
org.apache.poi.ss.usermodel.CellType
;
...
...
@@ -29,6 +28,7 @@ import org.apache.poi.ss.usermodel.DateUtil;
import
org.apache.poi.ss.usermodel.FillPatternType
;
import
org.apache.poi.ss.usermodel.Font
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.usermodel.VerticalAlignment
;
...
...
@@ -40,6 +40,7 @@ import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.annotation.Excel.Type
;
import
com.ruoyi.common.annotation.Excels
;
import
com.ruoyi.common.config.Global
;
...
...
@@ -85,6 +86,11 @@ public class ExcelUtil<T>
private
Sheet
sheet
;
/**
* 样式列表
*/
private
Map
<
String
,
CellStyle
>
styles
;
/**
* 导入导出数据列表
*/
private
List
<
T
>
list
;
...
...
@@ -376,10 +382,6 @@ public class ExcelUtil<T>
{
int
startNo
=
index
*
sheetSize
;
int
endNo
=
Math
.
min
(
startNo
+
sheetSize
,
list
.
size
());
// 写入各条记录,每条记录对应excel表中的一行
CellStyle
cs
=
wb
.
createCellStyle
();
cs
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
cs
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
for
(
int
i
=
startNo
;
i
<
endNo
;
i
++)
{
row
=
sheet
.
createRow
(
i
+
1
-
startNo
);
...
...
@@ -392,57 +394,105 @@ public class ExcelUtil<T>
Excel
excel
=
(
Excel
)
os
[
1
];
// 设置实体类私有属性可访问
field
.
setAccessible
(
true
);
this
.
addCell
(
excel
,
row
,
vo
,
field
,
column
++
,
cs
);
this
.
addCell
(
excel
,
row
,
vo
,
field
,
column
++);
}
}
}
/**
* 创建表格样式
*
* @param wb 工作薄对象
* @return 样式列表
*/
private
Map
<
String
,
CellStyle
>
createStyles
(
Workbook
wb
)
{
// 写入各条记录,每条记录对应excel表中的一行
Map
<
String
,
CellStyle
>
styles
=
new
HashMap
<
String
,
CellStyle
>();
CellStyle
style
=
wb
.
createCellStyle
();
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
style
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
style
.
setBorderRight
(
BorderStyle
.
THIN
);
style
.
setRightBorderColor
(
IndexedColors
.
GREY_50_PERCENT
.
getIndex
());
style
.
setBorderLeft
(
BorderStyle
.
THIN
);
style
.
setLeftBorderColor
(
IndexedColors
.
GREY_50_PERCENT
.
getIndex
());
style
.
setBorderTop
(
BorderStyle
.
THIN
);
style
.
setTopBorderColor
(
IndexedColors
.
GREY_50_PERCENT
.
getIndex
());
style
.
setBorderBottom
(
BorderStyle
.
THIN
);
style
.
setBottomBorderColor
(
IndexedColors
.
GREY_50_PERCENT
.
getIndex
());
Font
dataFont
=
wb
.
createFont
();
dataFont
.
setFontName
(
"Arial"
);
dataFont
.
setFontHeightInPoints
((
short
)
10
);
style
.
setFont
(
dataFont
);
styles
.
put
(
"data"
,
style
);
style
=
wb
.
createCellStyle
();
style
.
cloneStyleFrom
(
styles
.
get
(
"data"
));
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
style
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
style
.
setFillForegroundColor
(
IndexedColors
.
GREY_50_PERCENT
.
getIndex
());
style
.
setFillPattern
(
FillPatternType
.
SOLID_FOREGROUND
);
Font
headerFont
=
wb
.
createFont
();
headerFont
.
setFontName
(
"Arial"
);
headerFont
.
setFontHeightInPoints
((
short
)
10
);
headerFont
.
setBold
(
true
);
headerFont
.
setColor
(
IndexedColors
.
WHITE
.
getIndex
());
style
.
setFont
(
headerFont
);
styles
.
put
(
"header"
,
style
);
return
styles
;
}
/**
* 创建单元格
*/
public
Cell
createCell
(
Excel
attr
,
Row
row
,
int
column
)
{
// 创建列
Cell
cell
=
row
.
createCell
(
column
);
// 设置列中写入内容为String类型
cell
.
setCellType
(
CellType
.
STRING
);
// 写入列名
// 写入列信息
cell
.
setCellValue
(
attr
.
name
());
CellStyle
cellStyle
=
createStyle
(
attr
,
row
,
column
);
cell
.
setCellStyle
(
cellStyle
);
setDataValidation
(
attr
,
row
,
column
);
cell
.
setCellStyle
(
styles
.
get
(
"header"
)
);
return
cell
;
}
/**
* 设置单元格信息
*
* @param value 单元格值
* @param attr 注解相关
* @param cell 单元格信息
*/
public
void
setCellVo
(
Object
value
,
Excel
attr
,
Cell
cell
)
{
if
(
ColumnType
.
STRING
==
attr
.
cellType
())
{
cell
.
setCellType
(
CellType
.
NUMERIC
);
cell
.
setCellValue
(
StringUtils
.
isNull
(
value
)
?
attr
.
defaultValue
()
:
value
+
attr
.
suffix
());
}
else
if
(
ColumnType
.
NUMERIC
==
attr
.
cellType
())
{
cell
.
setCellType
(
CellType
.
NUMERIC
);
cell
.
setCellValue
(
Integer
.
parseInt
(
value
+
""
));
}
}
/**
* 创建表格样式
*/
public
CellStyle
createStyle
(
Excel
attr
,
Row
row
,
int
column
)
public
void
setDataValidation
(
Excel
attr
,
Row
row
,
int
column
)
{
CellStyle
cellStyle
=
wb
.
createCellStyle
();
cellStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
cellStyle
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
if
(
attr
.
name
().
indexOf
(
"注:"
)
>=
0
)
{
Font
font
=
wb
.
createFont
();
font
.
setColor
(
HSSFFont
.
COLOR_RED
);
cellStyle
.
setFont
(
font
);
cellStyle
.
setFillForegroundColor
(
HSSFColorPredefined
.
YELLOW
.
getIndex
());
sheet
.
setColumnWidth
(
column
,
6000
);
}
else
{
Font
font
=
wb
.
createFont
();
// 粗体显示
font
.
setBold
(
true
);
// 选择需要用到的字体格式
cellStyle
.
setFont
(
font
);
cellStyle
.
setFillForegroundColor
(
HSSFColorPredefined
.
LIGHT_YELLOW
.
getIndex
());
// 设置列宽
sheet
.
setColumnWidth
(
column
,
(
int
)
((
attr
.
width
()
+
0.72
)
*
256
));
row
.
setHeight
((
short
)
(
attr
.
height
()
*
20
));
}
cellStyle
.
setFillPattern
(
FillPatternType
.
SOLID_FOREGROUND
);
cellStyle
.
setWrapText
(
true
);
// 如果设置了提示信息则鼠标放上去提示.
if
(
StringUtils
.
isNotEmpty
(
attr
.
prompt
()))
{
...
...
@@ -455,13 +505,12 @@ public class ExcelUtil<T>
// 这里默认设了2-101列只能选择不能输入.
setXSSFValidation
(
sheet
,
attr
.
combo
(),
1
,
100
,
column
,
column
);
}
return
cellStyle
;
}
/**
* 添加单元格
*/
public
Cell
addCell
(
Excel
attr
,
Row
row
,
T
vo
,
Field
field
,
int
column
,
CellStyle
cs
)
public
Cell
addCell
(
Excel
attr
,
Row
row
,
T
vo
,
Field
field
,
int
column
)
{
Cell
cell
=
null
;
try
...
...
@@ -473,7 +522,7 @@ public class ExcelUtil<T>
{
// 创建cell
cell
=
row
.
createCell
(
column
);
cell
.
setCellStyle
(
cs
);
cell
.
setCellStyle
(
styles
.
get
(
"data"
)
);
// 用于读取对象中的属性
Object
value
=
getTargetValue
(
vo
,
field
,
attr
);
...
...
@@ -489,9 +538,8 @@ public class ExcelUtil<T>
}
else
{
cell
.
setCellType
(
CellType
.
STRING
);
// 如果数据存在就填入,不存在填入空格.
cell
.
setCellValue
(
StringUtils
.
isNull
(
value
)
?
attr
.
defaultValue
()
:
value
+
attr
.
suffix
());
// 设置列类型
setCellVo
(
value
,
attr
,
cell
);
}
}
}
...
...
@@ -752,6 +800,7 @@ public class ExcelUtil<T>
public
void
createSheet
(
double
sheetNo
,
int
index
)
{
this
.
sheet
=
wb
.
createSheet
();
this
.
styles
=
createStyles
(
wb
);
// 设置工作表的名称.
if
(
sheetNo
==
0
)
{
...
...
ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java
View file @
174ed020
...
...
@@ -6,6 +6,7 @@ import javax.validation.constraints.*;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.constant.ScheduleConstants
;
import
com.ruoyi.common.core.domain.BaseEntity
;
import
com.ruoyi.common.utils.StringUtils
;
...
...
@@ -21,7 +22,7 @@ public class SysJob extends BaseEntity implements Serializable
private
static
final
long
serialVersionUID
=
1L
;
/** 任务ID */
@Excel
(
name
=
"任务序号"
)
@Excel
(
name
=
"任务序号"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
jobId
;
/** 任务名称 */
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
View file @
174ed020
...
...
@@ -4,6 +4,7 @@ import javax.validation.constraints.*;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
...
...
@@ -16,7 +17,7 @@ public class SysConfig extends BaseEntity
private
static
final
long
serialVersionUID
=
1L
;
/** 参数主键 */
@Excel
(
name
=
"参数主键"
)
@Excel
(
name
=
"参数主键"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
configId
;
/** 参数名称 */
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysDictData.java
View file @
174ed020
...
...
@@ -4,6 +4,7 @@ import javax.validation.constraints.*;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.core.domain.BaseEntity
;
...
...
@@ -17,11 +18,11 @@ public class SysDictData extends BaseEntity
private
static
final
long
serialVersionUID
=
1L
;
/** 字典编码 */
@Excel
(
name
=
"字典编码"
)
@Excel
(
name
=
"字典编码"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
dictCode
;
/** 字典排序 */
@Excel
(
name
=
"字典排序"
)
@Excel
(
name
=
"字典排序"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
dictSort
;
/** 字典标签 */
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysDictType.java
View file @
174ed020
...
...
@@ -4,6 +4,7 @@ import javax.validation.constraints.*;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
...
...
@@ -16,7 +17,7 @@ public class SysDictType extends BaseEntity
private
static
final
long
serialVersionUID
=
1L
;
/** 字典主键 */
@Excel
(
name
=
"字典主键"
)
@Excel
(
name
=
"字典主键"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
dictId
;
/** 字典名称 */
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java
View file @
174ed020
...
...
@@ -4,6 +4,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.Date
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
...
...
@@ -14,39 +15,39 @@ import com.ruoyi.common.core.domain.BaseEntity;
public
class
SysLogininfor
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** ID */
@Excel
(
name
=
"序号"
)
@Excel
(
name
=
"序号"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
infoId
;
/** 用户账号 */
@Excel
(
name
=
"用户账号"
)
private
String
loginName
;
/** 登录状态 0成功 1失败 */
@Excel
(
name
=
"登录状态"
,
readConverterExp
=
"0=成功,1=失败"
)
private
String
status
;
/** 登录IP地址 */
@Excel
(
name
=
"登录地址"
)
private
String
ipaddr
;
/** 登录地点 */
@Excel
(
name
=
"登录地点"
)
private
String
loginLocation
;
/** 浏览器类型 */
@Excel
(
name
=
"浏览器"
)
private
String
browser
;
/** 操作系统 */
@Excel
(
name
=
"操作系统 "
)
private
String
os
;
/** 提示消息 */
@Excel
(
name
=
"提示消息"
)
private
String
msg
;
/** 访问时间 */
@Excel
(
name
=
"访问时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
loginTime
;
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
View file @
174ed020
...
...
@@ -4,6 +4,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.Date
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
...
...
@@ -16,7 +17,7 @@ public class SysOperLog extends BaseEntity
private
static
final
long
serialVersionUID
=
1L
;
/** 日志主键 */
@Excel
(
name
=
"操作序号"
)
@Excel
(
name
=
"操作序号"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
operId
;
/** 操作模块 */
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
View file @
174ed020
...
...
@@ -4,6 +4,7 @@ import javax.validation.constraints.*;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
...
...
@@ -16,7 +17,7 @@ public class SysPost extends BaseEntity
private
static
final
long
serialVersionUID
=
1L
;
/** 岗位序号 */
@Excel
(
name
=
"岗位序号"
)
@Excel
(
name
=
"岗位序号"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
postId
;
/** 岗位编码 */
...
...
@@ -28,7 +29,7 @@ public class SysPost extends BaseEntity
private
String
postName
;
/** 岗位排序 */
@Excel
(
name
=
"岗位排序"
)
@Excel
(
name
=
"岗位排序"
,
cellType
=
ColumnType
.
NUMERIC
)
private
String
postSort
;
/** 状态(0正常 1停用) */
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRole.java
View file @
174ed020
...
...
@@ -4,6 +4,7 @@ import javax.validation.constraints.*;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
...
...
@@ -16,7 +17,7 @@ public class SysRole extends BaseEntity
private
static
final
long
serialVersionUID
=
1L
;
/** 角色ID */
@Excel
(
name
=
"角色序号"
)
@Excel
(
name
=
"角色序号"
,
cellType
=
ColumnType
.
NUMERIC
)
private
Long
roleId
;
/** 角色名称 */
...
...
@@ -28,7 +29,7 @@ public class SysRole extends BaseEntity
private
String
roleKey
;
/** 角色排序 */
@Excel
(
name
=
"角色排序"
)
@Excel
(
name
=
"角色排序"
,
cellType
=
ColumnType
.
NUMERIC
)
private
String
roleSort
;
/** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限) */
...
...
@@ -156,7 +157,6 @@ public class SysRole extends BaseEntity
this
.
deptIds
=
deptIds
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"roleId"
,
getRoleId
())
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUser.java
View file @
174ed020
...
...
@@ -6,6 +6,7 @@ import javax.validation.constraints.*;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.annotation.Excel.ColumnType
;
import
com.ruoyi.common.annotation.Excel.Type
;
import
com.ruoyi.common.annotation.Excels
;
import
com.ruoyi.common.core.domain.BaseEntity
;
...
...
@@ -20,7 +21,7 @@ public class SysUser extends BaseEntity
private
static
final
long
serialVersionUID
=
1L
;
/** 用户ID */
@Excel
(
name
=
"用户序号"
,
prompt
=
"用户编号"
)
@Excel
(
name
=
"用户序号"
,
cellType
=
ColumnType
.
NUMERIC
,
prompt
=
"用户编号"
)
private
Long
userId
;
/** 部门ID */
...
...
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