Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-oss
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-oss
Commits
fec4288a
Commit
fec4288a
authored
Oct 17, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
8ea554f9
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
5 deletions
+23
-5
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AppointmentExcelServiceImpl.java
+23
-5
No files found.
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AppointmentExcelServiceImpl.java
View file @
fec4288a
...
@@ -11,6 +11,7 @@ import com.yd.oss.service.service.IFileTemplateService;
...
@@ -11,6 +11,7 @@ import com.yd.oss.service.service.IFileTemplateService;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.service.OssService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.io.*
;
import
java.io.*
;
...
@@ -164,14 +165,30 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
...
@@ -164,14 +165,30 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
int
neededBeneficiaryRows
=
beneficiaries
.
size
()
*
4
+
(
beneficiaries
.
size
()
-
1
);
// 每个受益人占4行,加上空行
int
neededBeneficiaryRows
=
beneficiaries
.
size
()
*
4
+
(
beneficiaries
.
size
()
-
1
);
// 每个受益人占4行,加上空行
int
rowsToInsert
=
neededBeneficiaryRows
-
existingBeneficiaryRows
;
int
rowsToInsert
=
neededBeneficiaryRows
-
existingBeneficiaryRows
;
if
(
rowsToInsert
>
0
)
{
// 修复:在移动行之前处理合并区域
if
(
rowsToInsert
!=
0
)
{
// 获取并移除受影响的合并区域
List
<
CellRangeAddress
>
mergedRegionsToRemove
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
sheet
.
getNumMergedRegions
();
i
++)
{
CellRangeAddress
mergedRegion
=
sheet
.
getMergedRegion
(
i
);
// 如果合并区域在移动的范围内,需要移除
if
(
mergedRegion
.
getFirstRow
()
>=
secondHolderRowNum
)
{
mergedRegionsToRemove
.
add
(
mergedRegion
);
}
}
// 移除受影响的合并区域
for
(
CellRangeAddress
mergedRegion
:
mergedRegionsToRemove
)
{
sheet
.
removeMergedRegion
(
sheet
.
getMergedRegions
().
indexOf
(
mergedRegion
));
}
// 下移后续内容,包括第二持有人资料
// 下移后续内容,包括第二持有人资料
sheet
.
shiftRows
(
secondHolderRowNum
,
sheet
.
getLastRowNum
(),
rowsToInsert
,
true
,
false
);
sheet
.
shiftRows
(
secondHolderRowNum
,
sheet
.
getLastRowNum
(),
rowsToInsert
,
true
,
false
);
secondHolderRowNum
+=
rowsToInsert
;
// 更新第二持有人资料的行号
secondHolderRowNum
+=
rowsToInsert
;
// 更新第二持有人资料的行号
}
else
if
(
rowsToInsert
<
0
)
{
// 上移后续内容
// 重新添加合并区域(位置已自动调整)
sheet
.
shiftRows
(
secondHolderRowNum
,
sheet
.
getLastRowNum
(),
rowsToInsert
,
true
,
false
);
// 这里不需要手动重新添加,因为shiftRows会自动处理合并区域的移动
secondHolderRowNum
+=
rowsToInsert
;
// 更新第二持有人资料的行号
}
}
// 清除模板中的示例数据(保留"受益人资料"标题行)
// 清除模板中的示例数据(保留"受益人资料"标题行)
...
@@ -261,6 +278,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
...
@@ -261,6 +278,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
// 确保第二持有人资料上方有一行空行
// 确保第二持有人资料上方有一行空行
secondHolderRow
=
sheet
.
getRow
(
secondHolderRowNum
);
secondHolderRow
=
sheet
.
getRow
(
secondHolderRowNum
);
if
(
secondHolderRow
!=
null
)
{
if
(
secondHolderRow
!=
null
)
{
// 修复:在添加空行前检查并处理合并区域
sheet
.
shiftRows
(
secondHolderRowNum
,
sheet
.
getLastRowNum
(),
1
,
true
,
false
);
sheet
.
shiftRows
(
secondHolderRowNum
,
sheet
.
getLastRowNum
(),
1
,
true
,
false
);
// 创建一个空行
// 创建一个空行
Row
emptyRow
=
sheet
.
createRow
(
secondHolderRowNum
);
Row
emptyRow
=
sheet
.
createRow
(
secondHolderRowNum
);
...
...
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