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
2aea9d55
Commit
2aea9d55
authored
Feb 13, 2023
by
liyijie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: export with association_records
parent
594adf32
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
6 deletions
+36
-6
export.rb
lib/tallty_import_export/export.rb
+36
-6
No files found.
lib/tallty_import_export/export.rb
View file @
2aea9d55
...
@@ -64,6 +64,23 @@ module TalltyImportExport
...
@@ -64,6 +64,23 @@ module TalltyImportExport
export_workbook
workbook
,
records
,
**
options
export_workbook
workbook
,
records
,
**
options
end
end
# 是否导出详细子表
# export_association_headers的结构,是association结合
if
respond_to?
(
:export_association_headers
)
export_association_headers
(
**
options
).
each
do
|
export_association
,
association_headers
|
records
.
each
do
|
record
|
association_records
=
record
.
send
(
:export_association
)
export_workbook
(
workbook
,
association_records
,
sheet_name:
record
.
try
(
:name
),
export_headers:
association_headers
,
**
options
,
)
end
end
end
file_path
=
File
.
join
(
Rails
.
root
,
'public'
,
'export'
)
file_path
=
File
.
join
(
Rails
.
root
,
'public'
,
'export'
)
# file_path = File.join('/Users/mushu/', 'export')
# file_path = File.join('/Users/mushu/', 'export')
FileUtils
.
mkdir_p
(
file_path
)
unless
Dir
.
exist?
(
file_path
)
FileUtils
.
mkdir_p
(
file_path
)
unless
Dir
.
exist?
(
file_path
)
...
@@ -74,16 +91,17 @@ module TalltyImportExport
...
@@ -74,16 +91,17 @@ module TalltyImportExport
end
end
end
end
def
export_workbook
(
workbook
,
association_records
,
**
options
)
def
export_workbook
(
workbook
,
association_records
,
sheet_name:
nil
,
export_headers:
nil
,
**
options
)
# excel导出样式
# excel导出样式
alignment
=
{
vertical: :center
,
horizontal: :center
}
alignment
=
{
vertical: :center
,
horizontal: :center
}
border
=
{
color:
'969696'
,
style: :thin
}
border
=
{
color:
'969696'
,
style: :thin
}
title1
=
workbook
.
styles
.
add_style
(
alignment:
alignment
,
border:
border
,
sz:
12
,
b:
true
)
title1
=
workbook
.
styles
.
add_style
(
alignment:
alignment
,
border:
border
,
sz:
12
,
b:
true
)
title2
=
workbook
.
styles
.
add_style
(
alignment:
alignment
,
border:
border
,
bg_color:
'2a5caa'
,
sz:
12
,
fg_color:
'fffffb'
)
title2
=
workbook
.
styles
.
add_style
(
alignment:
alignment
,
border:
border
,
bg_color:
'2a5caa'
,
sz:
12
,
fg_color:
'fffffb'
)
title3
=
workbook
.
styles
.
add_style
(
alignment:
alignment
.
merge
(
wrap_text:
true
),
border:
border
,
sz:
10
)
title3
=
workbook
.
styles
.
add_style
(
alignment:
alignment
.
merge
(
wrap_text:
true
),
border:
border
,
sz:
10
)
headers
=
export_headers_result
(
**
options
)
headers
=
export_headers
||
export_headers
_result
(
**
options
)
_sheet_name
=
respond_to?
(
:sheet_name
)
?
sheet_name
:
nil
_sheet_name
=
respond_to?
(
:sheet_name
)
?
sheet_name
:
nil
_sheet_name
||=
sheet_name
workbook
.
add_worksheet
(
name:
_sheet_name
)
do
|
sheet
|
workbook
.
add_worksheet
(
name:
_sheet_name
)
do
|
sheet
|
if
respond_to?
(
:first_header
)
if
respond_to?
(
:first_header
)
...
@@ -211,12 +229,24 @@ module TalltyImportExport
...
@@ -211,12 +229,24 @@ module TalltyImportExport
if
r
.
is_a?
(
Array
)
if
r
.
is_a?
(
Array
)
r
.
try
(
m
)
||
r
.
try
(
:[]
,
m
.
to_i
)
r
.
try
(
m
)
||
r
.
try
(
:[]
,
m
.
to_i
)
else
else
data
=
r
.
try
(
:[]
,
m
)
rescue
nil
data
=
begin
r
.
try
(
:[]
,
m
)
rescue
StandardError
nil
end
if
data
.
nil?
if
data
.
nil?
data
=
r
.
try
(
:[]
,
m
.
to_sym
)
rescue
nil
data
=
begin
r
.
try
(
:[]
,
m
.
to_sym
)
rescue
StandardError
nil
end
end
end
if
data
.
nil?
if
data
.
nil?
data
=
r
.
try
(
m
)
rescue
nil
data
=
begin
r
.
try
(
m
)
rescue
StandardError
nil
end
end
end
data
data
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