goldendocx 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/.rubocop.yml +47 -0
  4. data/CHANGELOG.md +43 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +101 -0
  7. data/README.md +76 -0
  8. data/Rakefile +10 -0
  9. data/coverage/.last_run.json +5 -0
  10. data/demo/charts/create_bar_chart.rb +30 -0
  11. data/demo/charts/create_column_chart.rb +29 -0
  12. data/demo/charts/create_doughnut_chart.rb +28 -0
  13. data/demo/charts/create_line_chart.rb +41 -0
  14. data/demo/images/append_image.rb +21 -0
  15. data/demo/images/append_styled_image.rb +14 -0
  16. data/demo/tables/create_embed_image_table.rb +42 -0
  17. data/demo/tables/create_plain_table.rb +22 -0
  18. data/demo/tables/create_styled_table.rb +36 -0
  19. data/demo/templates/bg.png +0 -0
  20. data/demo/templates/blankDocument.docx +0 -0
  21. data/demo/templates/image_base64 +1 -0
  22. data/demo/templates/styles/reportLabel +19 -0
  23. data/demo/templates/styles/reportSubTitle +20 -0
  24. data/demo/templates/styles/reportTable +27 -0
  25. data/demo/templates/styles/reportTitle +19 -0
  26. data/demo/texts/append_plain_text.rb +13 -0
  27. data/demo/texts/append_styled_text.rb +23 -0
  28. data/lib/goldendocx/charts/category_axis.rb +20 -0
  29. data/lib/goldendocx/charts/properties/auto_title_deleted_property.rb +16 -0
  30. data/lib/goldendocx/charts/properties/axis_property.rb +16 -0
  31. data/lib/goldendocx/charts/properties/bar_chart_property.rb +28 -0
  32. data/lib/goldendocx/charts/properties/chart_property.rb +16 -0
  33. data/lib/goldendocx/charts/properties/column_chart_property.rb +28 -0
  34. data/lib/goldendocx/charts/properties/cross_axis_property.rb +16 -0
  35. data/lib/goldendocx/charts/properties/data_lables_property.rb +16 -0
  36. data/lib/goldendocx/charts/properties/direction_property.rb +16 -0
  37. data/lib/goldendocx/charts/properties/doughnut_chart_property.rb +17 -0
  38. data/lib/goldendocx/charts/properties/grouping_property.rb +16 -0
  39. data/lib/goldendocx/charts/properties/hole_property.rb +16 -0
  40. data/lib/goldendocx/charts/properties/index_property.rb +16 -0
  41. data/lib/goldendocx/charts/properties/label_hidden_property.rb +16 -0
  42. data/lib/goldendocx/charts/properties/layout_property.rb +14 -0
  43. data/lib/goldendocx/charts/properties/line_chart_property.rb +24 -0
  44. data/lib/goldendocx/charts/properties/marker_property.rb +16 -0
  45. data/lib/goldendocx/charts/properties/number_list_property.rb +17 -0
  46. data/lib/goldendocx/charts/properties/order_property.rb +16 -0
  47. data/lib/goldendocx/charts/properties/plot_area_property.rb +23 -0
  48. data/lib/goldendocx/charts/properties/point_count_property.rb +16 -0
  49. data/lib/goldendocx/charts/properties/point_property.rb +18 -0
  50. data/lib/goldendocx/charts/properties/rounded_corner_property.rb +16 -0
  51. data/lib/goldendocx/charts/properties/series_category_property.rb +16 -0
  52. data/lib/goldendocx/charts/properties/series_text_property.rb +16 -0
  53. data/lib/goldendocx/charts/properties/series_value_property.rb +16 -0
  54. data/lib/goldendocx/charts/properties/smooth_property.rb +14 -0
  55. data/lib/goldendocx/charts/properties/string_list_property.rb +17 -0
  56. data/lib/goldendocx/charts/properties/symbol_property.rb +16 -0
  57. data/lib/goldendocx/charts/properties/text_value_property.rb +16 -0
  58. data/lib/goldendocx/charts/properties.rb +12 -0
  59. data/lib/goldendocx/charts/reference.rb +16 -0
  60. data/lib/goldendocx/charts/series.rb +57 -0
  61. data/lib/goldendocx/charts/value_axis.rb +20 -0
  62. data/lib/goldendocx/charts.rb +26 -0
  63. data/lib/goldendocx/components/bar_chart.rb +17 -0
  64. data/lib/goldendocx/components/chart.rb +55 -0
  65. data/lib/goldendocx/components/column_chart.rb +17 -0
  66. data/lib/goldendocx/components/doughnut_chart.rb +17 -0
  67. data/lib/goldendocx/components/image.rb +77 -0
  68. data/lib/goldendocx/components/line_chart.rb +17 -0
  69. data/lib/goldendocx/components/paragraph.rb +23 -0
  70. data/lib/goldendocx/components/properties/align_property.rb +16 -0
  71. data/lib/goldendocx/components/properties/bold_property.rb +16 -0
  72. data/lib/goldendocx/components/properties/color_property.rb +16 -0
  73. data/lib/goldendocx/components/properties/drawing.rb +16 -0
  74. data/lib/goldendocx/components/properties/extents_property.rb +17 -0
  75. data/lib/goldendocx/components/properties/graphic_data_property.rb +17 -0
  76. data/lib/goldendocx/components/properties/graphic_frame_locks_property.rb +18 -0
  77. data/lib/goldendocx/components/properties/graphic_frame_property.rb +16 -0
  78. data/lib/goldendocx/components/properties/graphic_property.rb +16 -0
  79. data/lib/goldendocx/components/properties/inline.rb +20 -0
  80. data/lib/goldendocx/components/properties/non_visual_property.rb +17 -0
  81. data/lib/goldendocx/components/properties/padding_property.rb +19 -0
  82. data/lib/goldendocx/components/properties/property.rb +17 -0
  83. data/lib/goldendocx/components/properties/run.rb +20 -0
  84. data/lib/goldendocx/components/properties/run_property.rb +17 -0
  85. data/lib/goldendocx/components/properties/style_property.rb +16 -0
  86. data/lib/goldendocx/components/properties/textual.rb +16 -0
  87. data/lib/goldendocx/components/properties.rb +12 -0
  88. data/lib/goldendocx/components/table.rb +44 -0
  89. data/lib/goldendocx/components/text.rb +35 -0
  90. data/lib/goldendocx/components.rb +16 -0
  91. data/lib/goldendocx/configuration.rb +18 -0
  92. data/lib/goldendocx/content_types/default.rb +22 -0
  93. data/lib/goldendocx/content_types/override.rb +22 -0
  94. data/lib/goldendocx/document.rb +51 -0
  95. data/lib/goldendocx/documents/body.rb +90 -0
  96. data/lib/goldendocx/documents/document.rb +29 -0
  97. data/lib/goldendocx/documents/element.rb +23 -0
  98. data/lib/goldendocx/documents/relationship.rb +17 -0
  99. data/lib/goldendocx/documents/relationships.rb +39 -0
  100. data/lib/goldendocx/documents/style.rb +21 -0
  101. data/lib/goldendocx/documents/styles.rb +74 -0
  102. data/lib/goldendocx/documents/unparsed_style.rb +17 -0
  103. data/lib/goldendocx/documents.rb +10 -0
  104. data/lib/goldendocx/docx.rb +108 -0
  105. data/lib/goldendocx/element.rb +192 -0
  106. data/lib/goldendocx/images/picture.rb +41 -0
  107. data/lib/goldendocx/images/properties/blip_property.rb +16 -0
  108. data/lib/goldendocx/images/properties/drawing_property.rb +14 -0
  109. data/lib/goldendocx/images/properties/extents_property.rb +17 -0
  110. data/lib/goldendocx/images/properties/fill_rectangle_property.rb +14 -0
  111. data/lib/goldendocx/images/properties/image_data_property.rb +17 -0
  112. data/lib/goldendocx/images/properties/non_visual_drawing_property.rb +17 -0
  113. data/lib/goldendocx/images/properties/non_visual_picture_property.rb +17 -0
  114. data/lib/goldendocx/images/properties/picture_fill_property.rb +17 -0
  115. data/lib/goldendocx/images/properties/picture_shape_property.rb +16 -0
  116. data/lib/goldendocx/images/properties/shape_property.rb +30 -0
  117. data/lib/goldendocx/images/properties/stretch_property.rb +17 -0
  118. data/lib/goldendocx/images/properties/transform_property.rb +16 -0
  119. data/lib/goldendocx/images/properties.rb +12 -0
  120. data/lib/goldendocx/images/shape.rb +32 -0
  121. data/lib/goldendocx/images.rb +12 -0
  122. data/lib/goldendocx/parts/content_types.rb +63 -0
  123. data/lib/goldendocx/parts/documents.rb +103 -0
  124. data/lib/goldendocx/parts/media.rb +43 -0
  125. data/lib/goldendocx/parts.rb +10 -0
  126. data/lib/goldendocx/tables/cell.rb +33 -0
  127. data/lib/goldendocx/tables/header_cell.rb +16 -0
  128. data/lib/goldendocx/tables/header_row.rb +14 -0
  129. data/lib/goldendocx/tables/image_cell.rb +23 -0
  130. data/lib/goldendocx/tables/properties/cell_property.rb +19 -0
  131. data/lib/goldendocx/tables/properties/cell_width_property.rb +17 -0
  132. data/lib/goldendocx/tables/properties/grid_column_property.rb +16 -0
  133. data/lib/goldendocx/tables/properties/grid_property.rb +16 -0
  134. data/lib/goldendocx/tables/properties/grid_span_property.rb +16 -0
  135. data/lib/goldendocx/tables/properties/header_row_property.rb +14 -0
  136. data/lib/goldendocx/tables/properties/property.rb +17 -0
  137. data/lib/goldendocx/tables/properties/row_height_property.rb +17 -0
  138. data/lib/goldendocx/tables/properties/row_property.rb +16 -0
  139. data/lib/goldendocx/tables/properties/shading_property.rb +18 -0
  140. data/lib/goldendocx/tables/properties/style_property.rb +16 -0
  141. data/lib/goldendocx/tables/properties/vertical_align_property.rb +16 -0
  142. data/lib/goldendocx/tables/properties/width_property.rb +17 -0
  143. data/lib/goldendocx/tables/properties.rb +12 -0
  144. data/lib/goldendocx/tables/row.rb +28 -0
  145. data/lib/goldendocx/tables.rb +19 -0
  146. data/lib/goldendocx/units.rb +11 -0
  147. data/lib/goldendocx/version.rb +5 -0
  148. data/lib/goldendocx/xml_serializers/nokogiri.rb +66 -0
  149. data/lib/goldendocx/xml_serializers/ox.rb +63 -0
  150. data/lib/goldendocx.rb +72 -0
  151. data/sig/goldendocx.rbs +4 -0
  152. 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
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
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
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://gems.ruby-china.com'
4
+ # source 'https://rubygems.org'
5
+
6
+ gemspec
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,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ RuboCop::RakeTask.new
9
+
10
+ task default: %i[rubocop spec]
@@ -0,0 +1,5 @@
1
+ {
2
+ "result": {
3
+ "line": 100.0
4
+ }
5
+ }
@@ -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