goldendocx 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/.rubocop.yml +47 -0
- data/CHANGELOG.md +43 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +101 -0
- data/README.md +76 -0
- data/Rakefile +10 -0
- data/coverage/.last_run.json +5 -0
- data/demo/charts/create_bar_chart.rb +30 -0
- data/demo/charts/create_column_chart.rb +29 -0
- data/demo/charts/create_doughnut_chart.rb +28 -0
- data/demo/charts/create_line_chart.rb +41 -0
- data/demo/images/append_image.rb +21 -0
- data/demo/images/append_styled_image.rb +14 -0
- data/demo/tables/create_embed_image_table.rb +42 -0
- data/demo/tables/create_plain_table.rb +22 -0
- data/demo/tables/create_styled_table.rb +36 -0
- data/demo/templates/bg.png +0 -0
- data/demo/templates/blankDocument.docx +0 -0
- data/demo/templates/image_base64 +1 -0
- data/demo/templates/styles/reportLabel +19 -0
- data/demo/templates/styles/reportSubTitle +20 -0
- data/demo/templates/styles/reportTable +27 -0
- data/demo/templates/styles/reportTitle +19 -0
- data/demo/texts/append_plain_text.rb +13 -0
- data/demo/texts/append_styled_text.rb +23 -0
- data/lib/goldendocx/charts/category_axis.rb +20 -0
- data/lib/goldendocx/charts/properties/auto_title_deleted_property.rb +16 -0
- data/lib/goldendocx/charts/properties/axis_property.rb +16 -0
- data/lib/goldendocx/charts/properties/bar_chart_property.rb +28 -0
- data/lib/goldendocx/charts/properties/chart_property.rb +16 -0
- data/lib/goldendocx/charts/properties/column_chart_property.rb +28 -0
- data/lib/goldendocx/charts/properties/cross_axis_property.rb +16 -0
- data/lib/goldendocx/charts/properties/data_lables_property.rb +16 -0
- data/lib/goldendocx/charts/properties/direction_property.rb +16 -0
- data/lib/goldendocx/charts/properties/doughnut_chart_property.rb +17 -0
- data/lib/goldendocx/charts/properties/grouping_property.rb +16 -0
- data/lib/goldendocx/charts/properties/hole_property.rb +16 -0
- data/lib/goldendocx/charts/properties/index_property.rb +16 -0
- data/lib/goldendocx/charts/properties/label_hidden_property.rb +16 -0
- data/lib/goldendocx/charts/properties/layout_property.rb +14 -0
- data/lib/goldendocx/charts/properties/line_chart_property.rb +24 -0
- data/lib/goldendocx/charts/properties/marker_property.rb +16 -0
- data/lib/goldendocx/charts/properties/number_list_property.rb +17 -0
- data/lib/goldendocx/charts/properties/order_property.rb +16 -0
- data/lib/goldendocx/charts/properties/plot_area_property.rb +23 -0
- data/lib/goldendocx/charts/properties/point_count_property.rb +16 -0
- data/lib/goldendocx/charts/properties/point_property.rb +18 -0
- data/lib/goldendocx/charts/properties/rounded_corner_property.rb +16 -0
- data/lib/goldendocx/charts/properties/series_category_property.rb +16 -0
- data/lib/goldendocx/charts/properties/series_text_property.rb +16 -0
- data/lib/goldendocx/charts/properties/series_value_property.rb +16 -0
- data/lib/goldendocx/charts/properties/smooth_property.rb +14 -0
- data/lib/goldendocx/charts/properties/string_list_property.rb +17 -0
- data/lib/goldendocx/charts/properties/symbol_property.rb +16 -0
- data/lib/goldendocx/charts/properties/text_value_property.rb +16 -0
- data/lib/goldendocx/charts/properties.rb +12 -0
- data/lib/goldendocx/charts/reference.rb +16 -0
- data/lib/goldendocx/charts/series.rb +57 -0
- data/lib/goldendocx/charts/value_axis.rb +20 -0
- data/lib/goldendocx/charts.rb +26 -0
- data/lib/goldendocx/components/bar_chart.rb +17 -0
- data/lib/goldendocx/components/chart.rb +55 -0
- data/lib/goldendocx/components/column_chart.rb +17 -0
- data/lib/goldendocx/components/doughnut_chart.rb +17 -0
- data/lib/goldendocx/components/image.rb +77 -0
- data/lib/goldendocx/components/line_chart.rb +17 -0
- data/lib/goldendocx/components/paragraph.rb +23 -0
- data/lib/goldendocx/components/properties/align_property.rb +16 -0
- data/lib/goldendocx/components/properties/bold_property.rb +16 -0
- data/lib/goldendocx/components/properties/color_property.rb +16 -0
- data/lib/goldendocx/components/properties/drawing.rb +16 -0
- data/lib/goldendocx/components/properties/extents_property.rb +17 -0
- data/lib/goldendocx/components/properties/graphic_data_property.rb +17 -0
- data/lib/goldendocx/components/properties/graphic_frame_locks_property.rb +18 -0
- data/lib/goldendocx/components/properties/graphic_frame_property.rb +16 -0
- data/lib/goldendocx/components/properties/graphic_property.rb +16 -0
- data/lib/goldendocx/components/properties/inline.rb +20 -0
- data/lib/goldendocx/components/properties/non_visual_property.rb +17 -0
- data/lib/goldendocx/components/properties/padding_property.rb +19 -0
- data/lib/goldendocx/components/properties/property.rb +17 -0
- data/lib/goldendocx/components/properties/run.rb +20 -0
- data/lib/goldendocx/components/properties/run_property.rb +17 -0
- data/lib/goldendocx/components/properties/style_property.rb +16 -0
- data/lib/goldendocx/components/properties/textual.rb +16 -0
- data/lib/goldendocx/components/properties.rb +12 -0
- data/lib/goldendocx/components/table.rb +44 -0
- data/lib/goldendocx/components/text.rb +35 -0
- data/lib/goldendocx/components.rb +16 -0
- data/lib/goldendocx/configuration.rb +18 -0
- data/lib/goldendocx/content_types/default.rb +22 -0
- data/lib/goldendocx/content_types/override.rb +22 -0
- data/lib/goldendocx/document.rb +51 -0
- data/lib/goldendocx/documents/body.rb +90 -0
- data/lib/goldendocx/documents/document.rb +29 -0
- data/lib/goldendocx/documents/element.rb +23 -0
- data/lib/goldendocx/documents/relationship.rb +17 -0
- data/lib/goldendocx/documents/relationships.rb +39 -0
- data/lib/goldendocx/documents/style.rb +21 -0
- data/lib/goldendocx/documents/styles.rb +74 -0
- data/lib/goldendocx/documents/unparsed_style.rb +17 -0
- data/lib/goldendocx/documents.rb +10 -0
- data/lib/goldendocx/docx.rb +108 -0
- data/lib/goldendocx/element.rb +192 -0
- data/lib/goldendocx/images/picture.rb +41 -0
- data/lib/goldendocx/images/properties/blip_property.rb +16 -0
- data/lib/goldendocx/images/properties/drawing_property.rb +14 -0
- data/lib/goldendocx/images/properties/extents_property.rb +17 -0
- data/lib/goldendocx/images/properties/fill_rectangle_property.rb +14 -0
- data/lib/goldendocx/images/properties/image_data_property.rb +17 -0
- data/lib/goldendocx/images/properties/non_visual_drawing_property.rb +17 -0
- data/lib/goldendocx/images/properties/non_visual_picture_property.rb +17 -0
- data/lib/goldendocx/images/properties/picture_fill_property.rb +17 -0
- data/lib/goldendocx/images/properties/picture_shape_property.rb +16 -0
- data/lib/goldendocx/images/properties/shape_property.rb +30 -0
- data/lib/goldendocx/images/properties/stretch_property.rb +17 -0
- data/lib/goldendocx/images/properties/transform_property.rb +16 -0
- data/lib/goldendocx/images/properties.rb +12 -0
- data/lib/goldendocx/images/shape.rb +32 -0
- data/lib/goldendocx/images.rb +12 -0
- data/lib/goldendocx/parts/content_types.rb +63 -0
- data/lib/goldendocx/parts/documents.rb +103 -0
- data/lib/goldendocx/parts/media.rb +43 -0
- data/lib/goldendocx/parts.rb +10 -0
- data/lib/goldendocx/tables/cell.rb +33 -0
- data/lib/goldendocx/tables/header_cell.rb +16 -0
- data/lib/goldendocx/tables/header_row.rb +14 -0
- data/lib/goldendocx/tables/image_cell.rb +23 -0
- data/lib/goldendocx/tables/properties/cell_property.rb +19 -0
- data/lib/goldendocx/tables/properties/cell_width_property.rb +17 -0
- data/lib/goldendocx/tables/properties/grid_column_property.rb +16 -0
- data/lib/goldendocx/tables/properties/grid_property.rb +16 -0
- data/lib/goldendocx/tables/properties/grid_span_property.rb +16 -0
- data/lib/goldendocx/tables/properties/header_row_property.rb +14 -0
- data/lib/goldendocx/tables/properties/property.rb +17 -0
- data/lib/goldendocx/tables/properties/row_height_property.rb +17 -0
- data/lib/goldendocx/tables/properties/row_property.rb +16 -0
- data/lib/goldendocx/tables/properties/shading_property.rb +18 -0
- data/lib/goldendocx/tables/properties/style_property.rb +16 -0
- data/lib/goldendocx/tables/properties/vertical_align_property.rb +16 -0
- data/lib/goldendocx/tables/properties/width_property.rb +17 -0
- data/lib/goldendocx/tables/properties.rb +12 -0
- data/lib/goldendocx/tables/row.rb +28 -0
- data/lib/goldendocx/tables.rb +19 -0
- data/lib/goldendocx/units.rb +11 -0
- data/lib/goldendocx/version.rb +5 -0
- data/lib/goldendocx/xml_serializers/nokogiri.rb +66 -0
- data/lib/goldendocx/xml_serializers/ox.rb +63 -0
- data/lib/goldendocx.rb +72 -0
- data/sig/goldendocx.rbs +4 -0
- metadata +347 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f1603ab8a5538d27e48b351b381f8859c92fb9e42169df8cbcc6104545803c2b
|
4
|
+
data.tar.gz: 9bc30497d4a1f96da15f8190d9edb42857f2ec6876550ebb47415f3ed5e67caa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b826c86f0013b2af7af58b047cdb5340cc912913ca78b0198ab9b506a8614a173b2d1a53f42d928da6f277f21a6312895175687a49e79e2cf63658acace1ef4a
|
7
|
+
data.tar.gz: cb4198c911418e3579df98019d87709a009aed9bd595b2889602e595a32d53b2a333561cd8d43dde67f40a55b1ebd6552e0921a184308417f4ce8270a215cd0f
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-performance
|
3
|
+
- rubocop-rspec
|
4
|
+
|
5
|
+
AllCops:
|
6
|
+
NewCops: enable
|
7
|
+
TargetRubyVersion: 2.7
|
8
|
+
SuggestExtensions: false
|
9
|
+
|
10
|
+
Metrics/AbcSize:
|
11
|
+
CountRepeatedAttributes: false
|
12
|
+
|
13
|
+
Metrics/ClassLength:
|
14
|
+
CountAsOne:
|
15
|
+
- array
|
16
|
+
- hash
|
17
|
+
|
18
|
+
Metrics/MethodLength:
|
19
|
+
Max: 15
|
20
|
+
CountAsOne:
|
21
|
+
- array
|
22
|
+
- hash
|
23
|
+
|
24
|
+
Style/Documentation:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
Style/NumericLiterals:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
Style/StringLiterals:
|
31
|
+
Enabled: true
|
32
|
+
EnforcedStyle: single_quotes
|
33
|
+
|
34
|
+
Style/StringLiteralsInInterpolation:
|
35
|
+
Enabled: true
|
36
|
+
EnforcedStyle: single_quotes
|
37
|
+
|
38
|
+
Layout/LineLength:
|
39
|
+
Max: 150
|
40
|
+
|
41
|
+
RSpec/ExampleLength:
|
42
|
+
Max: 20
|
43
|
+
|
44
|
+
RSpec/MultipleExpectations:
|
45
|
+
Max: 10
|
46
|
+
|
47
|
+
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
## [0.1.0] - 2023-02-20
|
2
|
+
|
3
|
+
Basic implementation for generating a docx file based on docx file as template.
|
4
|
+
|
5
|
+
Already available for production usages.
|
6
|
+
|
7
|
+
### Features
|
8
|
+
|
9
|
+
- Create texts for docx
|
10
|
+
- Create tables for docx
|
11
|
+
- Create images for docx
|
12
|
+
- Create charts for docx ( Yet only readable for WPS )
|
13
|
+
|
14
|
+
## [0.2.0] - 2023-03-22
|
15
|
+
|
16
|
+
Mostly refactoring
|
17
|
+
|
18
|
+
### Features
|
19
|
+
|
20
|
+
- Support both `ox` and `nokogiri` as XML serializer
|
21
|
+
|
22
|
+
## [0.2.1] - 2023-03-23
|
23
|
+
|
24
|
+
### Features
|
25
|
+
|
26
|
+
- Support customize color and bold for Text
|
27
|
+
|
28
|
+
### Refactors
|
29
|
+
|
30
|
+
- Introduce `ActiveSupport` to make coding easier
|
31
|
+
- Clean irrelevant demos
|
32
|
+
|
33
|
+
## [0.2.2] - 2023-03-31(WIP)
|
34
|
+
|
35
|
+
### Features
|
36
|
+
|
37
|
+
- Add Github CI support
|
38
|
+
|
39
|
+
|
40
|
+
### Fixes
|
41
|
+
|
42
|
+
- Fix create charts issues
|
43
|
+
- Fix Nokogiri XML serializer compatible issues
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
goldendocx (0.2.2)
|
5
|
+
activesupport (~> 7.0)
|
6
|
+
nokogiri (~> 1.14)
|
7
|
+
ox (~> 2.14)
|
8
|
+
rubyzip (~> 2.3)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://gems.ruby-china.com/
|
12
|
+
specs:
|
13
|
+
activesupport (7.0.4.3)
|
14
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
|
+
i18n (>= 1.6, < 2)
|
16
|
+
minitest (>= 5.1)
|
17
|
+
tzinfo (~> 2.0)
|
18
|
+
ast (2.4.2)
|
19
|
+
concurrent-ruby (1.2.2)
|
20
|
+
diff-lcs (1.5.0)
|
21
|
+
docile (1.4.0)
|
22
|
+
i18n (1.12.0)
|
23
|
+
concurrent-ruby (~> 1.0)
|
24
|
+
json (2.6.2)
|
25
|
+
minitest (5.18.0)
|
26
|
+
nokogiri (1.14.2-x86_64-darwin)
|
27
|
+
racc (~> 1.4)
|
28
|
+
nokogiri (1.14.2-x86_64-linux)
|
29
|
+
racc (~> 1.4)
|
30
|
+
ox (2.14.14)
|
31
|
+
parallel (1.22.1)
|
32
|
+
parser (3.2.1.1)
|
33
|
+
ast (~> 2.4.1)
|
34
|
+
racc (1.6.2)
|
35
|
+
rainbow (3.1.1)
|
36
|
+
rake (13.0.6)
|
37
|
+
regexp_parser (2.6.2)
|
38
|
+
rexml (3.2.5)
|
39
|
+
rspec (3.11.0)
|
40
|
+
rspec-core (~> 3.11.0)
|
41
|
+
rspec-expectations (~> 3.11.0)
|
42
|
+
rspec-mocks (~> 3.11.0)
|
43
|
+
rspec-core (3.11.0)
|
44
|
+
rspec-support (~> 3.11.0)
|
45
|
+
rspec-expectations (3.11.0)
|
46
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
47
|
+
rspec-support (~> 3.11.0)
|
48
|
+
rspec-mocks (3.11.1)
|
49
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
50
|
+
rspec-support (~> 3.11.0)
|
51
|
+
rspec-support (3.11.0)
|
52
|
+
rubocop (1.42.0)
|
53
|
+
json (~> 2.3)
|
54
|
+
parallel (~> 1.10)
|
55
|
+
parser (>= 3.1.2.1)
|
56
|
+
rainbow (>= 2.2.2, < 4.0)
|
57
|
+
regexp_parser (>= 1.8, < 3.0)
|
58
|
+
rexml (>= 3.2.5, < 4.0)
|
59
|
+
rubocop-ast (>= 1.24.1, < 2.0)
|
60
|
+
ruby-progressbar (~> 1.7)
|
61
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
62
|
+
rubocop-ast (1.28.0)
|
63
|
+
parser (>= 3.2.1.0)
|
64
|
+
rubocop-capybara (2.17.1)
|
65
|
+
rubocop (~> 1.41)
|
66
|
+
rubocop-performance (1.16.0)
|
67
|
+
rubocop (>= 1.7.0, < 2.0)
|
68
|
+
rubocop-ast (>= 0.4.0)
|
69
|
+
rubocop-rspec (2.19.0)
|
70
|
+
rubocop (~> 1.33)
|
71
|
+
rubocop-capybara (~> 2.17)
|
72
|
+
ruby-progressbar (1.11.0)
|
73
|
+
rubyzip (2.3.2)
|
74
|
+
simplecov (0.22.0)
|
75
|
+
docile (~> 1.1)
|
76
|
+
simplecov-html (~> 0.11)
|
77
|
+
simplecov_json_formatter (~> 0.1)
|
78
|
+
simplecov-html (0.12.3)
|
79
|
+
simplecov-lcov (0.8.0)
|
80
|
+
simplecov_json_formatter (0.1.4)
|
81
|
+
tzinfo (2.0.6)
|
82
|
+
concurrent-ruby (~> 1.0)
|
83
|
+
unicode-display_width (2.2.0)
|
84
|
+
|
85
|
+
PLATFORMS
|
86
|
+
x86_64-darwin
|
87
|
+
x86_64-darwin-21
|
88
|
+
x86_64-linux
|
89
|
+
|
90
|
+
DEPENDENCIES
|
91
|
+
goldendocx!
|
92
|
+
rake (~> 13.0)
|
93
|
+
rspec (~> 3.11)
|
94
|
+
rubocop (~> 1.25)
|
95
|
+
rubocop-performance (~> 1.16)
|
96
|
+
rubocop-rspec (~> 2.19)
|
97
|
+
simplecov (~> 0.22.0)
|
98
|
+
simplecov-lcov (~> 0.8.0)
|
99
|
+
|
100
|
+
BUNDLED WITH
|
101
|
+
2.3.23
|
data/README.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# The Ruby API for Microsoft Word
|
2
|
+
|
3
|
+
Ruby APIs for manipulating Microsoft Word based upon OOXML standards.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Install the gem and add to the application's Gemfile by executing:
|
8
|
+
|
9
|
+
$ bundle add goldendocx
|
10
|
+
|
11
|
+
If bundler is not being used to manage dependencies, install the gem by executing:
|
12
|
+
|
13
|
+
$ gem install goldendocx
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
require 'goldendocx'
|
19
|
+
```
|
20
|
+
|
21
|
+
### XML Serializers
|
22
|
+
|
23
|
+
Support both `ox` and `nokogiri` as XML serializer, and `ox` as default.
|
24
|
+
|
25
|
+
You can customize with configuration
|
26
|
+
```ruby
|
27
|
+
Goldendocx.configure do |config|
|
28
|
+
config.xml_serializer = :nokogiri
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
### Compose MS Word
|
33
|
+
- Read MS Word file and write to another path
|
34
|
+
```ruby
|
35
|
+
docx = Goldendocx::Docx.new(docx_file_path)
|
36
|
+
docx.write_to(new_file_path)
|
37
|
+
```
|
38
|
+
- Create texts to MS Word
|
39
|
+
```ruby
|
40
|
+
docx.create_text("Hello World!")
|
41
|
+
```
|
42
|
+
```ruby
|
43
|
+
docx.add_style(well_comsposed_style_path)
|
44
|
+
docx.create_text("Hello World!", style: 'StyleName', align: :center)
|
45
|
+
```
|
46
|
+
- Create tables to MS Word
|
47
|
+
```ruby
|
48
|
+
headers = %w[名称 数量 百分比]
|
49
|
+
rows = [
|
50
|
+
%w[A 10 10%],
|
51
|
+
%w[B 66 66%],
|
52
|
+
%w[C 24 24%]
|
53
|
+
]
|
54
|
+
table = docx.create_table
|
55
|
+
headers.each { |header| table.add_header(header) }
|
56
|
+
rows.each { |row| table.add_row(row) }
|
57
|
+
```
|
58
|
+
- Create images to MS Word
|
59
|
+
```ruby
|
60
|
+
docx.create_image(File.open(image_path))
|
61
|
+
docx.create_image("data:image/png;base64,ImageBase64StringData")
|
62
|
+
docx.create_image(Kernel.open('https://image.url'))
|
63
|
+
```
|
64
|
+
|
65
|
+
- Create charts to MS Word
|
66
|
+
```ruby
|
67
|
+
chart = docx.create_chart(:column)
|
68
|
+
chart.name = '地域分布详情数据'
|
69
|
+
|
70
|
+
categories = %w[河南省 山东省 浙江省 四川省 安徽省 上海市 湖北省 山西省 河北省 贵州省]
|
71
|
+
values = [13, 12, 9, 9, 8, 7, 7, 6, 5, 3]
|
72
|
+
chart.add_series('地域分布详情数据', categories, values)
|
73
|
+
```
|
74
|
+
|
75
|
+
More demos view at [Demos](demo/)
|
76
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportTitle"))
|
9
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportSubTitle"))
|
10
|
+
|
11
|
+
docx.create_text('地域分布详情数据(Top 10)', style: 'SubTitle')
|
12
|
+
|
13
|
+
chart = docx.create_chart(:bar)
|
14
|
+
chart.name = '地域分布详情数据(Top 10)'
|
15
|
+
|
16
|
+
categories = %w[
|
17
|
+
河南省 山东省 浙江省 四川省 安徽省 上海市 湖北省 山西省 河北省 贵州省 广东省 江西省
|
18
|
+
北京市 陕西省 江苏省 广西壮族自治区 福建省 甘肃省 新疆维吾尔自治区 内蒙古自治区 黑龙江省
|
19
|
+
宁夏回族自治区 吉林省 天津市 辽宁省 云南省 海外
|
20
|
+
]
|
21
|
+
values = [
|
22
|
+
13, 12, 9, 9, 8, 7, 7, 6, 5, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1
|
23
|
+
]
|
24
|
+
|
25
|
+
chart.add_series('地域分布详情数据', categories, values)
|
26
|
+
|
27
|
+
filename = 'simpleBarChartDocument.docx'
|
28
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
29
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
30
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportTitle"))
|
9
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportSubTitle"))
|
10
|
+
|
11
|
+
docx.create_text('地域分布详情数据', style: 'SubTitle')
|
12
|
+
|
13
|
+
chart = docx.create_chart(:column)
|
14
|
+
chart.name = '地域分布详情数据'
|
15
|
+
|
16
|
+
categories = %w[
|
17
|
+
河南省 山东省 浙江省 四川省 安徽省 上海市 湖北省 山西省 河北省 贵州省 广东省 江西省
|
18
|
+
北京市 陕西省 江苏省 广西壮族自治区 福建省 甘肃省 新疆维吾尔自治区 内蒙古自治区 黑龙江省
|
19
|
+
宁夏回族自治区 吉林省 天津市 辽宁省 云南省 海外
|
20
|
+
]
|
21
|
+
values = [
|
22
|
+
13, 12, 9, 9, 8, 7, 7, 6, 5, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1
|
23
|
+
]
|
24
|
+
chart.add_series('地域分布详情数据', categories, values)
|
25
|
+
|
26
|
+
filename = 'simpleColumnChartDocument.docx'
|
27
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
28
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
29
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportTitle"))
|
9
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportSubTitle"))
|
10
|
+
|
11
|
+
docx.create_text('地域分布详情数据(Top 10)', style: 'SubTitle')
|
12
|
+
|
13
|
+
chart = docx.create_chart(:doughnut)
|
14
|
+
categories = %w[
|
15
|
+
河南省 山东省 浙江省 四川省 安徽省 上海市 湖北省 山西省 河北省 贵州省 广东省 江西省
|
16
|
+
北京市 陕西省 江苏省 广西壮族自治区 福建省 甘肃省 新疆维吾尔自治区 内蒙古自治区 黑龙江省
|
17
|
+
宁夏回族自治区 吉林省 天津市 辽宁省 云南省 海外
|
18
|
+
]
|
19
|
+
values = [
|
20
|
+
13, 12, 9, 9, 8, 7, 7, 6, 5, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1
|
21
|
+
]
|
22
|
+
|
23
|
+
chart.add_series('地域分布详情数据', categories, values)
|
24
|
+
|
25
|
+
filename = 'simpleDoughnutChartDocument.docx'
|
26
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
27
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
28
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportTitle"))
|
9
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportSubTitle"))
|
10
|
+
|
11
|
+
docx.create_text('表单最近表现(2023.01.29-2023.02.28)', style: 'SubTitle')
|
12
|
+
|
13
|
+
chart = docx.create_chart(:line)
|
14
|
+
chart.name = '表单最近表现'
|
15
|
+
|
16
|
+
categories = %w[
|
17
|
+
2023-01-29 2023-01-30 2023-01-31 2023-02-01 2023-02-02 2023-02-03 2023-02-04 2023-02-05
|
18
|
+
2023-02-06 2023-02-07 2023-02-08 2023-02-09 2023-02-10 2023-02-11 2023-02-12 2023-02-13
|
19
|
+
2023-02-14 2023-02-15 2023-02-16 2023-02-17 2023-02-18 2023-02-19 2023-02-20 2023-02-21
|
20
|
+
2023-02-22 2023-02-23 2023-02-24 2023-02-25 2023-02-26 2023-02-27 2023-02-28
|
21
|
+
]
|
22
|
+
|
23
|
+
view_values = [
|
24
|
+
0, 0, 0, 2, 0, 48, 158, 94, 126, 142, 9, 7, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 3, 2
|
25
|
+
]
|
26
|
+
chart.add_series('浏览', categories, view_values)
|
27
|
+
|
28
|
+
fill_values = [
|
29
|
+
0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 20, 0, 20, 0, 0, 60, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 45, 30, 0, 0
|
30
|
+
]
|
31
|
+
chart.add_series('填写', categories, fill_values)
|
32
|
+
|
33
|
+
query_values = [
|
34
|
+
2, 1, 12, 0, 0, 0, 0, 45, 0, 0, 20, 0, 0, 24, 0, 0, 0, 0, 23, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
35
|
+
]
|
36
|
+
chart.add_series('查询', categories, query_values)
|
37
|
+
|
38
|
+
filename = 'simpleLineChartDocument.docx'
|
39
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
40
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
41
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
require 'open-uri'
|
6
|
+
|
7
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
8
|
+
|
9
|
+
image = File.open("#{Dir.pwd}/demo/templates/bg.png")
|
10
|
+
docx.create_image(image)
|
11
|
+
|
12
|
+
image_base64 = File.read("#{Dir.pwd}/demo/templates/image_base64")
|
13
|
+
docx.create_image(image_base64)
|
14
|
+
|
15
|
+
image_url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png'
|
16
|
+
docx.create_image(Kernel.open(image_url))
|
17
|
+
|
18
|
+
filename = 'simpleImageDocument.docx'
|
19
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
20
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
21
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
image = File.open("#{Dir.pwd}/demo/templates/bg.png")
|
9
|
+
docx.create_image(image, width: 720000, height: 720000)
|
10
|
+
|
11
|
+
filename = 'styledImageDocument.docx'
|
12
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
13
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
14
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
Goldendocx.configure { |config| config.xml_serializer = :ox }
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
# Register styles because default document without any style
|
9
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportTable"))
|
10
|
+
# Set default textAlignment at template instead of modify manually
|
11
|
+
# docx.document.styles.styles.find { |s| s.type == 'paragraph' && s.default? }.tap do |style|
|
12
|
+
# style.node.public_send('w:pPr').tap do |pr|
|
13
|
+
# pr << Ox::Element.new('w:textAlignment').tap { |a| a['w:val'] = :center }
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
|
17
|
+
table = docx.create_table(style: 'reportTable')
|
18
|
+
|
19
|
+
# Headers
|
20
|
+
table.add_header('名称', width: (Goldendocx::Tables::DEFAULT_TABLE_DXA_WIDTH / 2))
|
21
|
+
table.add_header('数量', width: 1500)
|
22
|
+
table.add_header('单价')
|
23
|
+
table.add_header('总价', width: (Goldendocx::Tables::DEFAULT_TABLE_DXA_WIDTH / 6))
|
24
|
+
|
25
|
+
# Rows
|
26
|
+
image_base64 = File.read("#{Dir.pwd}/demo/templates/image_base64")
|
27
|
+
image = docx.create_embed_image(image_base64, width: 720000, height: 720000, align: :left)
|
28
|
+
|
29
|
+
rows = [
|
30
|
+
[Goldendocx::Tables::ImageCell.new(image: image, content: '选项A'), 3, '¥3.00', '¥9.00'],
|
31
|
+
[Goldendocx::Tables::ImageCell.new(image: image, content: '选项B'), 4, '¥6.50', '¥18.00'],
|
32
|
+
[Goldendocx::Tables::ImageCell.new(image: image, content: '选项C'), 10, '¥6.00', '¥60.00']
|
33
|
+
]
|
34
|
+
rows.each do |r|
|
35
|
+
row = table.add_row(r)
|
36
|
+
row.height = 1500
|
37
|
+
end
|
38
|
+
|
39
|
+
filename = 'embedImageTableDocument.docx'
|
40
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
41
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
42
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
headers = %w[名称 数量 单价]
|
9
|
+
rows = [
|
10
|
+
%w[可口可乐 3 ¥3.00],
|
11
|
+
%w[魔爪 4 ¥6.50],
|
12
|
+
%w[北冰洋 10 ¥6.00]
|
13
|
+
]
|
14
|
+
|
15
|
+
table = docx.create_table
|
16
|
+
headers.each { |header| table.add_header(header) }
|
17
|
+
rows.each { |row| table.add_row(row) }
|
18
|
+
|
19
|
+
filename = 'plainTableDocument.docx'
|
20
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
21
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
22
|
+
exec "open ~/Desktop/#{filename}"
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push "#{Dir.pwd}/lib"
|
4
|
+
require 'goldendocx'
|
5
|
+
|
6
|
+
docx = Goldendocx::Docx.new("#{Dir.pwd}/demo/templates/blankDocument.docx")
|
7
|
+
|
8
|
+
# Register styles because default document without any style
|
9
|
+
docx.add_style(File.read("#{Dir.pwd}/demo/templates/styles/reportTable"))
|
10
|
+
|
11
|
+
table = docx.create_table(style: 'reportTable')
|
12
|
+
|
13
|
+
# Headers
|
14
|
+
table.add_header('名称', width: (Goldendocx::Tables::DEFAULT_TABLE_DXA_WIDTH / 2))
|
15
|
+
table.add_header('数量', width: 1500)
|
16
|
+
table.add_header('单价')
|
17
|
+
table.add_header('总价', width: (Goldendocx::Tables::DEFAULT_TABLE_DXA_WIDTH / 6))
|
18
|
+
|
19
|
+
# Rows
|
20
|
+
rows = [
|
21
|
+
%w[可口可乐 3 ¥3.00 ¥9.00],
|
22
|
+
%w[魔爪 4 ¥6.50 ¥18.00],
|
23
|
+
%w[北冰洋 10 ¥6.00 ¥60.00]
|
24
|
+
]
|
25
|
+
rows.each do |r|
|
26
|
+
row = table.add_row(r)
|
27
|
+
row.height = 500
|
28
|
+
end
|
29
|
+
|
30
|
+
# RowMergeCell
|
31
|
+
table.add_row([{ span: 4, content: '总数据量: 210', align: :center }])
|
32
|
+
|
33
|
+
filename = 'styledTableDocument.docx'
|
34
|
+
system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
|
35
|
+
docx.write_to File.expand_path("~/Desktop/#{filename}")
|
36
|
+
exec "open ~/Desktop/#{filename}"
|
Binary file
|
Binary file
|