Referência da API
Referência consolidada da superfície do Office Oxide, organizada por conceito em vez de por binding. Cada binding espelha a mesma forma — os nomes seguem as convenções da linguagem (snake_case em Rust/Python, camelCase em JS, PascalCase em C#/.NET, Pascal em Go).
Document — handle de leitura
Abre por path; o formato é detectado pela extensão e pelos magic bytes.
| Conceito | Rust | Python | JavaScript | Go | C# | C |
|---|---|---|---|---|---|---|
| Abrir arquivo | Document::open(path) |
Document.open(path) |
Document.open(path) |
officeoxide.Open(path) |
Document.Open(path) |
office_document_open |
| Abrir bytes | Document::from_reader(r, fmt) |
Document.from_bytes(b, fmt) |
Document.fromBytes(b, fmt) |
OpenFromBytes(b, fmt) |
Document.FromBytes(b, fmt) |
office_document_open_from_bytes |
| Formato | .format() |
.format |
.format |
.Format() |
.Format |
office_document_format |
| Texto puro | .plain_text() |
.plain_text() |
.plainText() |
.PlainText() |
.PlainText() |
office_document_plain_text |
| Markdown | .to_markdown() |
.to_markdown() |
.toMarkdown() |
.ToMarkdown() |
.ToMarkdown() |
office_document_to_markdown |
| HTML | .to_html() |
.to_html() |
.toHtml() |
.ToHTML() |
.ToHtml() |
office_document_to_html |
| IR | .to_ir() (tipado) |
.to_ir() (dict) |
.toIr() (object) |
.ToIRJSON() |
.ToIrJson() |
office_document_to_ir_json |
| Salvar / converter | .save_as(path) |
.save_as(path) |
.saveAs(path) |
.SaveAs(path) |
.SaveAs(path) |
office_document_save_as |
| Fechar | drop | sair do with |
close() / using |
.Close() |
Dispose / using |
office_document_free |
DocumentFormat
Docx | Xlsx | Pptx | Doc | Xls | Ppt
As strings de formato usadas nas fronteiras FFI (from_bytes etc.) são as versões minúsculas desses nomes: "docx", "xlsx", "pptx", "doc", "xls", "ppt".
EditableDocument — read-modify-write
Mesma API de abertura do Document. Salvar preserva todas as partes OPC inalteradas.
| Conceito | Rust | Python | JavaScript | Go | C# | C |
|---|---|---|---|---|---|---|
| Abrir | EditableDocument::open |
EditableDocument.open |
EditableDocument.open |
OpenEditable |
EditableDocument.Open |
office_editable_open |
| Substituir texto | .replace_text(n, r) |
.replace_text(n, r) |
.replaceText(n, r) |
.ReplaceText(n, r) |
.ReplaceText(n, r) |
office_editable_replace_text |
| Definir célula XLSX | .set_cell(idx, ref, v) |
.set_cell(idx, ref, v) |
.setCell(idx, ref, v) |
.SetCell(idx, ref, v) |
.SetCell(idx, ref, v) |
office_editable_set_cell |
| Salvar | .save(path) |
.save(path) |
.save(path) |
.Save(path) |
.Save(path) |
office_editable_save |
| Salvar bytes | .write_to(w) |
.save_to_bytes() |
.saveToBytes() |
.SaveToBytes() |
.SaveToBytes() |
office_editable_save_to_bytes |
Handles editáveis suportam apenas DOCX, XLSX, PPTX. Chamar replace_text em XLSX retorna 0; use set_cell. Chamar set_cell em DOCX/PPTX dá erro.
Helpers de nível de módulo
| Helper | Retorna | Disponível em |
|---|---|---|
extract_text(path) |
string UTF-8 | Todos os bindings |
to_markdown(path) |
string Markdown GFM | Todos os bindings |
to_html(path) |
string com fragmento HTML | Todos os bindings |
detect_format(path) |
nome do formato ou null | Todos os bindings |
version() |
"0.1.0" |
Todos os bindings |
create_from_ir(ir, fmt, path) |
unit / void | Rust, Python |
DocumentIR — schema
DocumentIR {
sections: [Section]
}
Section {
title: Option<string>
elements: [Element]
}
Element = Heading { level, text }
| Paragraph { runs: [Run] }
| List { ordered, items: [string] }
| Table { rows: [[string]] }
| Image { filename, data: bytes }
Run {
text, bold, italic, underline, hyperlink: Option<string>
}
Em Python, Element é despachado pelo campo kind ("Heading", "Paragraph", "List", "Table", "Image").
Erros
Erros expõem um código tipado e o nome da operação que falhou.
| Código | Significado |
|---|---|
| 0 | OK |
| 1 | Argumento inválido (ponteiro nil, string de formato desconhecida) |
| 2 | Erro de I/O |
| 3 | Erro de parsing (documento corrompido) |
| 4 | Falha de extração (parsing OK, mas render falhou) |
| 5 | Erro interno (bug — abra uma issue) |
| 6 | Não suportado (extensão ou feature) |
| Binding | Tipo |
|---|---|
| Rust | office_oxide::OfficeError (enum) |
| Python | OfficeOxideError (exceção, .code, .operation) |
| JavaScript | OfficeOxideError (subclasse de Error, .code, .operation) |
| Go | *officeoxide.Error (.Code, .Op) |
| C# | OfficeOxideException (.Code, .Operation) |
| C | int *error_code out-parameter |
Feature flags (crate Rust)
[dependencies]
office_oxide = { version = "0.1.0", features = ["mmap", "parallel"] }
| Feature | Efeito |
|---|---|
mmap |
Document::open_mmap para abertura zero-copy de OOXML |
parallel |
helpers de parsing paralelo via rayon |
serde |
(default) Serialize / Deserialize nos tipos da IR |
python |
bindings PyO3 (usados pelo build da wheel office-oxide no PyPI) |
Submódulos por formato (Rust)
office_oxide::docx — DocxDocument, DocxBuilder, edit::DocxEditor
office_oxide::xlsx — XlsxDocument, XlsxBuilder, edit::{XlsxEditor, CellValue}
office_oxide::pptx — PptxDocument, PptxBuilder, edit::PptxEditor
office_oxide::doc — DocDocument
office_oxide::xls — XlsDocument
office_oxide::ppt — PptDocument
office_oxide::ir — DocumentIR, Section, Element, Run
office_oxide::edit — EditableDocument
office_oxide::create — create_from_ir
Use os submódulos quando precisar de acesso específico de formato — iteração de planilhas, manipulação de slides, custom XML — além do que o Document unificado expõe.
Veja também
- Documentação da crate: docs.rs/office_oxide
- Código-fonte: github.com/yfedoseev/office_oxide
- Header C:
include/office_oxide_c/office_oxide.h