Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
tallty_import_export
Project
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
open-source
tallty_import_export
Commits
3eb9d9a7
Commit
3eb9d9a7
authored
Apr 19, 2021
by
liyijie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix row_cell merge logic
parent
da71d9f8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
9 additions
and
27 deletions
+9
-27
export.rb
lib/tallty_import_export/export.rb
+9
-27
No files found.
lib/tallty_import_export/export.rb
View file @
3eb9d9a7
...
...
@@ -91,9 +91,14 @@ module TalltyImportExport
headers
.
each_with_index
do
|
header
,
col_index
|
_data
=
handle_data
(
record
,
header
,
index
)
if
header
[
:merge
].
present?
&&
last_row
.
present?
&&
_data
==
last_row
[
col_index
]
merge_column_hash
[
col_index
]
||=
[]
merge_column_hash
[
col_index
]
<<
index
+
first_content_row_index
merge_column_hash
[
col_index
]
<<
index
+
first_content_row_index
+
1
# 这里使用二维数组,每个数组里都是列内容相同的各行
merge_column_hash
[
col_index
]
||=
[[]]
if
merge_column_hash
[
col_index
].
last
.
last
==
index
+
first_content_row_index
-
1
# 说明内容和上面的是延续的,继续加入之前的数组
merge_column_hash
[
col_index
].
last
<<
index
+
first_content_row_index
else
merge_column_hash
[
col_index
]
<<
[
index
+
first_content_row_index
-
1
,
index
+
first_content_row_index
]
end
end
row
.
push
(
_data
)
end
...
...
@@ -103,7 +108,7 @@ module TalltyImportExport
# 需要根据column进行多行的内容合并
if
merge_column_hash
.
present?
merge_column_hash
.
each
do
|
col_index
,
row_arr
|
split_arr
(
row_arr
)
.
each
do
|
arr
|
row_arr
.
each
do
|
arr
|
sheet
.
merge_cells
(
Axlsx
::
cell_r
(
col_index
,
arr
.
first
)
+
':'
+
Axlsx
::
cell_r
(
col_index
,
arr
.
last
)
)
...
...
@@ -169,28 +174,5 @@ module TalltyImportExport
data
end
end
private
def
split_arr
continuous_arr
continuous_arr
.
sort
.
each_with_index
.
reduce
([])
do
|
arr
,
(
i
,
_index
)
|
if
arr
.
last
.
nil?
arr
<<
i
elsif
i
-
arr
.
last
>
2
arr
<<
nil
arr
<<
i
else
if
arr
[
-
2
].
blank?
arr
<<
i
elsif
arr
[
-
1
]
-
arr
[
-
2
]
==
i
-
arr
[
-
1
]
arr
<<
i
else
arr
<<
nil
arr
<<
i
end
end
arr
end
.
split
end
end
end
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