Expand description
OpenQVD: clean-room reader for Qlik QVD files.
Implements the specification in SPEC.md (Apache-2.0). Derived
entirely from binary analysis of a public corpus; no existing QVD
parsers have been consulted.
§Quick start
use openqvd::Qvd;
let qvd = Qvd::from_path("data.qvd").unwrap();
println!("table {:?} with {} rows", qvd.table_name(), qvd.num_rows());
for row in qvd.rows() {
for (field, value) in qvd.fields().iter().zip(row) {
println!(" {} = {:?}", field.name, value);
}
}The reader is strict: any deviation from the spec produces a
QvdError rather than silent misinterpretation.
Structs§
- Checked
RowIter - Checked iterator over decoded rows.
- Column
- A single column of logical values, ready to be written.
- Dual
- A single value in the Qlik “dual” sense: a machine number and the textual form that Qlik used to render it.
- Field
Header - Parsed representation of a
<QvdFieldHeader>element. - Number
Format - Parsed
<NumberFormat>element. Every observed file contains the same six sub-elements. Values are informational only: they do not change how bytes are decoded. - Qvd
- An in-memory QVD file with headers, symbol tables, and the packed row index block.
- Table
Header - Parsed representation of
<QvdTableHeader>plus its fields. - Write
Table - A logical table ready to be encoded.