Repository navigation
Integrations de
English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt
docxi hat keine Plugins und keine eingebauten Integrationen. Es ist reines Ruby, das ein StringIO zurückgibt, und funktioniert daher überall, wo Sie einen String senden oder speichern können. Diese Seite zeigt die üblichen Wege, es einzubinden. Das Rails-Controller-Muster ist dasselbe wie in der README, und die Testsuite läuft mit geladenem Rails 5.2 bis 8.1.
class ReportsController < ApplicationController
def show
word = Docxi::Document.new
word.document.p { |p| p.text "Report for #{Date.today}" }
send_data word.render.string,
filename: "report.docx",
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
end
endsend_data setzt Content-Disposition: attachment, sodass der Browser die Datei herunterlädt. Mit Bundler wird docxi automatisch aus dem Gemfile geladen.
Große Dokumente oder Dokumente, die auf langsamen Abfragen beruhen, entstehen besser in einem Job:
class MonthlyReportJob < ApplicationJob
queue_as :default
def perform(path)
word = Docxi::Document.new
word.document.p { |p| p.text "Monthly report", bold: true, size: 16 }
File.binwrite(path, word.render.string)
end
endDer Job schreibt in einen Pfad Ihrer Wahl. Wohin die Datei danach geht, etwa in einen Speicher oder eine E-Mail, entscheidet Ihre Anwendung.
Jede Rack-Anwendung kann die Bytes direkt zurückgeben:
require "docxi"
class ReportApp
def call(env)
word = Docxi::Document.new
word.document.p { |p| p.text "Generated by a Rack app" }
headers = {
"content-type" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"content-disposition" => 'attachment; filename="report.docx"'
}
[200, headers, [word.render.string]]
end
endBinden Sie sie mit run ReportApp.new in config.ru ein. Derselbe Ansatz funktioniert mit Sinatra, Hanami und jedem Framework, das einen String als Antwortkörper senden kann.
docxi braucht weder Server noch Office-Software, ein einfaches Ruby-Skript genügt also:
require "docxi"
word = Docxi::Document.new
word.document.p { |p| p.text "Nightly export" }
File.binwrite(ARGV.fetch(0, "export.docx"), word.render.string)docxi wiki · README · Installation · Troubleshooting · Report an issue · MIT License
Start
Build documents
Help
Project
Links
Languages