用于 Word 文档处理的开源 Ruby 库
免费的 Ruby API,使软件开发人员能够生成和编辑 Microsoft Word 文件、管理页眉和页脚、插入和编辑表格等等。
开始使用 Docx
推荐的安装方式是使用 npm。请对您的应用程序的 Gemfile 使用以下命令
通过 npm 安装文档
gem install docx
通过 Ruby 写入现有 DOCX 文件
Ruby Docx 库使软件开发人员能够打开现有的 DOCX 文件并更新他们自己的 Ruby 应用程序中的文件内容。要打开文件,您需要提供现有 DOCX 文件的正确路径。一旦您可以访问文档,您就可以轻松地添加单行文本或段落、替换文本、删除不需要的内容、修改现有文本等等。一切都正确完成后,您可以将文档保存到指定路径。
如何通过Ruby API写到现有的DOCX个文件
require 'docx'
doc = Docx::Document.open('example.docx')
doc.bookmarks['example_bookmark'].insert_text_after("Hello world.")
# Insert multiple lines of text at our bookmark
doc.bookmarks['example_bookmark_2'].insert_multiple_lines_after(['Hello', 'World', 'foo'])
# Remove paragraphs
doc.paragraphs.each do |p|
p.remove! if p.to_s =~ /TODO/
end
# Substitute text, preserving formatting
doc.paragraphs.each do |p|
p.each_text_run do |tr|
tr.substitute('_placeholder_', 'replacement value')
end
end
# Save document to specified path
doc.save('example-edited.docx')
通过 Ruby 库读取 Docx 文件
开源 Ruby Docx 库提供了使用几行 Ruby 代码访问和读取 MS Word DOCX 文件的功能。开发人员可以轻松地为我们现有的 Docx 文件创建文档对象,并且只需几行 Ruby 代码即可检索和显示文件的内容。您可以轻松显示特定段落或书签。您还可以显示缓冲区中的文件。
通过Ruby打开现有的Docx文件
require 'docx'
# Create a Docx::Document object for our existing docx file
doc = Docx::Document.open('example.docx')
# Retrieve and display paragraphs
doc.paragraphs.each do |p|
puts p
end
# Retrieve and display bookmarks, returned as hash with bookmark names as keys and objects as values
doc.bookmarks.each_pair do |bookmark_name, bookmark_object|
puts bookmark_name
end
读取 Word DOCX 文件中的表格
开源 Ruby DOCX 库使软件开发人员能够使用 Ruby 命令访问和读取 DOCX 文件中的表。只需几行代码,您就可以轻松访问表格的行、列和单元格。该库支持遍历表、基于行的迭代和基于列的迭代。
如何通过Ruby API读取Word文档中的表
require 'docx'
# Create a Docx::Document object for our existing docx file
doc = Docx::Document.open('tables.docx')
first_table = doc.tables[0]
puts first_table.row_count
puts first_table.column_count
puts first_table.rows[0].cells[0].text
puts first_table.columns[0].cells[0].text
# Iterate through tables
doc.tables.each do |table|
table.rows.each do |row| # Row-based iteration
row.cells.each do |cell|
puts cell.text
end
end
table.columns.each do |column| # Column-based iteration
column.cells.each do |cell|
puts cell.text
end
end
end