Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
platform
Project
Project
Details
Activity
Releases
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
王琮
platform
Commits
a57e32a8
Commit
a57e32a8
authored
Nov 01, 2022
by
王国存
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
问卷管理审批-导出优化;
绩效汇总列表排序修改
parent
f89723f9
Changes
3
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
163 additions
and
1 deletion
+163
-1
ExcelFillCellMergeStrategy.java
...in/java/com/tiptimes/ctrl/ExcelFillCellMergeStrategy.java
+123
-0
QuestionnaireCtrl.java
src/main/java/com/tiptimes/ctrl/QuestionnaireCtrl.java
+4
-1
QuestionnaireServiceImpl.java
...a/com/tiptimes/service/impl/QuestionnaireServiceImpl.java
+36
-0
No files found.
src/main/java/com/tiptimes/ctrl/ExcelFillCellMergeStrategy.java
0 → 100644
View file @
a57e32a8
package
com
.
tiptimes
.
ctrl
;
import
com.alibaba.excel.write.handler.CellWriteHandler
;
import
com.alibaba.excel.metadata.CellData
;
import
com.alibaba.excel.metadata.Head
;
import
com.alibaba.excel.write.metadata.holder.WriteSheetHolder
;
import
com.alibaba.excel.write.metadata.holder.WriteTableHolder
;
import
org.apache.poi.ss.usermodel.Cell
;
import
org.apache.poi.ss.usermodel.CellType
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
java.util.List
;
/**
* 单元格合并
*
* @author wangugocun
* @date 2022/10/24 11:35
*/
public
class
ExcelFillCellMergeStrategy
implements
CellWriteHandler
{
/**
* 合并字段的下标
*/
private
int
[]
mergeColumnIndex
;
/**
* 合并几行
*/
private
int
mergeRowIndex
;
public
int
[]
getMergeColumnIndex
()
{
return
mergeColumnIndex
;
}
public
void
setMergeColumnIndex
(
int
[]
mergeColumnIndex
)
{
this
.
mergeColumnIndex
=
mergeColumnIndex
;
}
public
int
getMergeRowIndex
()
{
return
mergeRowIndex
;
}
public
void
setMergeRowIndex
(
int
mergeRowIndex
)
{
this
.
mergeRowIndex
=
mergeRowIndex
;
}
public
ExcelFillCellMergeStrategy
()
{
}
public
ExcelFillCellMergeStrategy
(
int
mergeRowIndex
,
int
[]
mergeColumnIndex
)
{
this
.
mergeRowIndex
=
mergeRowIndex
;
this
.
mergeColumnIndex
=
mergeColumnIndex
;
}
@Override
public
void
beforeCellCreate
(
WriteSheetHolder
writeSheetHolder
,
WriteTableHolder
writeTableHolder
,
Row
row
,
Head
head
,
Integer
integer
,
Integer
integer1
,
Boolean
aBoolean
)
{
}
@Override
public
void
afterCellCreate
(
WriteSheetHolder
writeSheetHolder
,
WriteTableHolder
writeTableHolder
,
Cell
cell
,
Head
head
,
Integer
integer
,
Boolean
aBoolean
)
{
}
// @Override
// public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
// CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
//
// }
@Override
public
void
afterCellDispose
(
WriteSheetHolder
writeSheetHolder
,
WriteTableHolder
writeTableHolder
,
List
<
CellData
>
list
,
Cell
cell
,
Head
head
,
Integer
integer
,
Boolean
aBoolean
)
{
//当前行
int
curRowIndex
=
cell
.
getRowIndex
();
//当前列
int
curColIndex
=
cell
.
getColumnIndex
();
if
(
curRowIndex
>
mergeRowIndex
)
{
for
(
int
i
=
0
;
i
<
mergeColumnIndex
.
length
;
i
++)
{
if
(
curColIndex
==
mergeColumnIndex
[
i
])
{
mergeWithPrevRow
(
writeSheetHolder
,
cell
,
curRowIndex
,
curColIndex
);
break
;
}
}
}
}
private
void
mergeWithPrevRow
(
WriteSheetHolder
writeSheetHolder
,
Cell
cell
,
int
curRowIndex
,
int
curColIndex
)
{
//获取当前行的当前列的数据和上一行的当前列列数据,通过上一行数据是否相同进行合并
Object
curData
=
cell
.
getCellTypeEnum
()
==
CellType
.
STRING
?
cell
.
getStringCellValue
()
:
cell
.
getNumericCellValue
();
Cell
preCell
=
cell
.
getSheet
().
getRow
(
curRowIndex
-
1
).
getCell
(
curColIndex
);
Object
preData
=
preCell
.
getCellTypeEnum
()
==
CellType
.
STRING
?
preCell
.
getStringCellValue
()
:
preCell
.
getNumericCellValue
();
// 比较当前行的第一列的单元格与上一行是否相同,相同合并当前单元格与上一行
//
if
(
curData
.
equals
(
preData
))
{
Sheet
sheet
=
writeSheetHolder
.
getSheet
();
List
<
CellRangeAddress
>
mergeRegions
=
sheet
.
getMergedRegions
();
boolean
isMerged
=
false
;
for
(
int
i
=
0
;
i
<
mergeRegions
.
size
()
&&
!
isMerged
;
i
++)
{
CellRangeAddress
cellRangeAddr
=
mergeRegions
.
get
(
i
);
// 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元
if
(
cellRangeAddr
.
isInRange
(
curRowIndex
-
1
,
curColIndex
))
{
sheet
.
removeMergedRegion
(
i
);
cellRangeAddr
.
setLastRow
(
curRowIndex
);
sheet
.
addMergedRegion
(
cellRangeAddr
);
isMerged
=
true
;
}
}
// 若上一个单元格未被合并,则新增合并单元
if
(!
isMerged
)
{
CellRangeAddress
cellRangeAddress
=
new
CellRangeAddress
(
curRowIndex
-
1
,
curRowIndex
,
curColIndex
,
curColIndex
);
sheet
.
addMergedRegion
(
cellRangeAddress
);
}
}
}
}
src/main/java/com/tiptimes/ctrl/QuestionnaireCtrl.java
View file @
a57e32a8
...
...
@@ -13,6 +13,7 @@ import com.tiptimes.service.FileService;
import
com.tiptimes.service.QuestionnaireService
;
import
com.tiptimes.util.*
;
import
org.apache.commons.io.FileUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -376,7 +377,9 @@ public class QuestionnaireCtrl {
//列表排序
String
sorting
=
""
;
if
(
performanceSummary
.
getSorting
().
equals
(
"desc"
)){
if
(
StringUtils
.
isEmpty
(
performanceSummary
.
getSorting
())){
sorting
=
"tr.create_time desc"
;
}
else
if
(
performanceSummary
.
getSorting
().
equals
(
"desc"
)){
sorting
=
"tr.create_time desc"
;
}
else
{
sorting
=
"basicIndicators,guideIndicators,rewardIndicators desc"
;
...
...
src/main/java/com/tiptimes/service/impl/QuestionnaireServiceImpl.java
View file @
a57e32a8
This diff is collapsed.
Click to expand it.
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