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
d24a60ff
Commit
d24a60ff
authored
Nov 08, 2021
by
liyijie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 解决each_method的逻辑错误
parent
6b0916d9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
15 deletions
+19
-15
export.rb
lib/tallty_import_export/export.rb
+19
-15
No files found.
lib/tallty_import_export/export.rb
View file @
d24a60ff
...
...
@@ -65,7 +65,7 @@ module TalltyImportExport
end
end
def
export_workbook
workbook
,
records
def
export_workbook
workbook
,
association_
records
# excel导出样式
alignment
=
{
vertical: :center
,
horizontal: :center
}
border
=
{
color:
'969696'
,
style: :thin
}
...
...
@@ -89,25 +89,29 @@ module TalltyImportExport
merge_column_hash
=
{}
first_content_row_index
=
respond_to?
(
:first_header
)
?
2
:
1
each_method
=
@each_method
||
:each
records
.
try_method
(
each_method
).
with_index
do
|
record
,
index
|
index
=
0
association_records
.
each
do
|
association_record
|
row
=
[]
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
]
||=
[]
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
]
records
=
@each_method
.
present?
?
association_record
.
try_method
(
@each_method
)
:
[
association_record
]
records
.
each
do
|
record
|
index
+=
1
_data
=
handle_data
(
record
,
header
,
index
)
if
header
[
:merge
].
present?
&&
last_row
.
present?
&&
_data
==
last_row
[
col_index
]
# 这里使用二维数组,每个数组里都是列内容相同的各行
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
row
.
push
(
_data
)
sheet
.
add_row
row
,
style:
title3
,
height:
@row_height
,
types:
headers
.
map
{
|
header
|
header
[
:format
]
&
.
to_sym
}
last_row
=
row
end
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?
...
...
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