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
d732e8fe
Commit
d732e8fe
authored
Apr 19, 2021
by
liyijie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加导出export的merge选项支持,如果相邻行相同,则合并该列各行单元格
parent
9e2bec53
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
1 deletion
+47
-1
export.rb
lib/tallty_import_export/export.rb
+47
-1
No files found.
lib/tallty_import_export/export.rb
View file @
d732e8fe
...
@@ -81,11 +81,34 @@ module TalltyImportExport
...
@@ -81,11 +81,34 @@ module TalltyImportExport
sheet
.
add_row
headers
.
map
{
|
header
|
header
[
:name
]},
style:
title2
,
height:
39
sheet
.
add_row
headers
.
map
{
|
header
|
header
[
:name
]},
style:
title2
,
height:
39
last_row
=
nil
merge_column_hash
=
{}
first_content_row_index
=
respond_to?
(
:first_header
)
?
2
:
1
each_method
=
records
.
is_a?
(
Array
)
?
:
each
:
:each
each_method
=
records
.
is_a?
(
Array
)
?
:
each
:
:each
records
.
send
(
each_method
).
with_index
do
|
record
,
index
|
records
.
send
(
each_method
).
with_index
do
|
record
,
index
|
row
=
[]
row
=
[]
headers
.
each
{
|
header
|
row
.
push
(
handle_data
(
record
,
header
,
index
))
}
headers
.
each_with_index
do
|
header
,
col_index
|
_data
=
handle_data
(
record
,
header
,
index
)
if
header
[
:merge
].
present?
&&
last_row
.
present?
&&
_data
==
last_row
[
index
]
merge_index
=
merge_column_hash
[
col_index
]
||
[]
merge_index
<<
index
+
first_content_row_index
merge_index
<<
index
+
first_content_row_index
+
1
end
row
.
push
(
_data
)
end
sheet
.
add_row
row
,
style:
title3
,
height:
@row_height
,
types:
headers
.
map
{
|
header
|
header
[
:format
]
&
.
to_sym
}
sheet
.
add_row
row
,
style:
title3
,
height:
@row_height
,
types:
headers
.
map
{
|
header
|
header
[
:format
]
&
.
to_sym
}
last_row
=
row
end
# 需要根据column进行多行的内容合并
if
merge_column_hash
.
present?
merge_column_hash
.
each
do
|
col_index
,
row_arr
|
split_arr
(
row_arr
).
each
do
|
arr
|
sheet
.
merge_cells
(
Axlsx
::
cell_r
(
arr
.
first
,
col_index
)
+
':'
+
Axlsx
::
cell_r
(
arr
.
last
,
col_index
)
)
end
end
end
end
sheet
.
column_widths
(
*
headers
.
map
{
|
header
|
header
[
:width
]
||
@width
})
sheet
.
column_widths
(
*
headers
.
map
{
|
header
|
header
[
:width
]
||
@width
})
end
end
...
@@ -146,5 +169,28 @@ module TalltyImportExport
...
@@ -146,5 +169,28 @@ module TalltyImportExport
data
data
end
end
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
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