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
142f6ad6
Commit
142f6ad6
authored
Nov 21, 2022
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
兼容Excel下拉框内容过多无法显示的问题(I5XB6I)
parent
b4bdd4f3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
63 additions
and
2 deletions
+63
-2
ExcelUtil.java
...n/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+63
-2
No files found.
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
View file @
142f6ad6
...
@@ -48,6 +48,7 @@ import org.apache.poi.ss.usermodel.FillPatternType;
...
@@ -48,6 +48,7 @@ import org.apache.poi.ss.usermodel.FillPatternType;
import
org.apache.poi.ss.usermodel.Font
;
import
org.apache.poi.ss.usermodel.Font
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.apache.poi.ss.usermodel.Name
;
import
org.apache.poi.ss.usermodel.PictureData
;
import
org.apache.poi.ss.usermodel.PictureData
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.usermodel.Sheet
;
...
@@ -982,8 +983,16 @@ public class ExcelUtil<T>
...
@@ -982,8 +983,16 @@ public class ExcelUtil<T>
}
}
if
(
StringUtils
.
isNotEmpty
(
attr
.
prompt
())
||
attr
.
combo
().
length
>
0
)
if
(
StringUtils
.
isNotEmpty
(
attr
.
prompt
())
||
attr
.
combo
().
length
>
0
)
{
{
// 提示信息或只能选择不能输入的列内容.
if
(
attr
.
combo
().
length
>
15
||
StringUtils
.
join
(
attr
.
combo
()).
length
()
>
255
)
setPromptOrValidation
(
sheet
,
attr
.
combo
(),
attr
.
prompt
(),
1
,
100
,
column
,
column
);
{
// 如果下拉数大于15或字符串长度大于255,则使用一个新sheet存储,避免生成的模板下拉值获取不到
setXSSFValidationWithHidden
(
sheet
,
attr
.
combo
(),
attr
.
prompt
(),
1
,
100
,
column
,
column
);
}
else
{
// 提示信息或只能选择不能输入的列内容.
setPromptOrValidation
(
sheet
,
attr
.
combo
(),
attr
.
prompt
(),
1
,
100
,
column
,
column
);
}
}
}
}
}
...
@@ -1087,6 +1096,58 @@ public class ExcelUtil<T>
...
@@ -1087,6 +1096,58 @@ public class ExcelUtil<T>
sheet
.
addValidationData
(
dataValidation
);
sheet
.
addValidationData
(
dataValidation
);
}
}
/**
* 设置某些列的值只能输入预制的数据,显示下拉框(兼容超出一定数量的下拉框).
*
* @param sheet 要设置的sheet.
* @param textlist 下拉框显示的内容
* @param promptContent 提示内容
* @param firstRow 开始行
* @param endRow 结束行
* @param firstCol 开始列
* @param endCol 结束列
*/
public
void
setXSSFValidationWithHidden
(
Sheet
sheet
,
String
[]
textlist
,
String
promptContent
,
int
firstRow
,
int
endRow
,
int
firstCol
,
int
endCol
)
{
String
hideSheetName
=
"combo_"
+
firstCol
+
"_"
+
endCol
;
Sheet
hideSheet
=
wb
.
createSheet
(
hideSheetName
);
// 用于存储 下拉菜单数据
for
(
int
i
=
0
;
i
<
textlist
.
length
;
i
++)
{
hideSheet
.
createRow
(
i
).
createCell
(
0
).
setCellValue
(
textlist
[
i
]);
}
// 创建名称,可被其他单元格引用
Name
name
=
wb
.
createName
();
name
.
setNameName
(
hideSheetName
+
"_data"
);
name
.
setRefersToFormula
(
hideSheetName
+
"!$A$1:$A$"
+
textlist
.
length
);
DataValidationHelper
helper
=
sheet
.
getDataValidationHelper
();
// 加载下拉列表内容
DataValidationConstraint
constraint
=
helper
.
createFormulaListConstraint
(
hideSheetName
+
"_data"
);
// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
CellRangeAddressList
regions
=
new
CellRangeAddressList
(
firstRow
,
endRow
,
firstCol
,
endCol
);
// 数据有效性对象
DataValidation
dataValidation
=
helper
.
createValidation
(
constraint
,
regions
);
if
(
StringUtils
.
isNotEmpty
(
promptContent
))
{
// 如果设置了提示信息则鼠标放上去提示
dataValidation
.
createPromptBox
(
""
,
promptContent
);
dataValidation
.
setShowPromptBox
(
true
);
}
// 处理Excel兼容性问题
if
(
dataValidation
instanceof
XSSFDataValidation
)
{
dataValidation
.
setSuppressDropDownArrow
(
true
);
dataValidation
.
setShowErrorBox
(
true
);
}
else
{
dataValidation
.
setSuppressDropDownArrow
(
false
);
}
sheet
.
addValidationData
(
dataValidation
);
// 设置hiddenSheet隐藏
wb
.
setSheetHidden
(
wb
.
getSheetIndex
(
hideSheet
),
true
);
}
/**
/**
* 解析导出值 0=男,1=女,2=未知
* 解析导出值 0=男,1=女,2=未知
*
*
...
...
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