1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//! # excelstream
//!
//! A high-performance Rust library for streaming Excel import/export operations.
//!
//! ## Features
//!
//! - **Streaming Read**: Read large Excel files without loading entire file into memory
//! - **Streaming Write**: Write millions of rows with constant ~80MB memory usage
//! - **Formula Support**: Write Excel formulas that calculate correctly
//! - **High Performance**: 30K-45K rows/sec throughput with streaming
//! - **Better Errors**: Context-rich error messages with debugging info
//! - **Multiple Formats**: Support for XLSX, XLS, ODS formats
//! - **Type Safety**: Strong typing with Rust's type system
//! - **Zero-copy**: Minimize memory allocations where possible
//!
//! ## Quick Start
//!
//! ### Reading Excel Files (Streaming)
//!
//! ```rust,no_run
//! use excelstream::streaming_reader::StreamingReader;
//!
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let mut reader = StreamingReader::open("data.xlsx")?;
//!
//! for row_result in reader.rows("Sheet1")? {
//! let row = row_result?;
//! println!("Row: {:?}", row);
//! }
//! # Ok(())
//! # }
//! ```
//!
//! ### Writing Excel Files (Streaming)
//!
//! ```rust,no_run
//! use excelstream::writer::ExcelWriter;
//! use excelstream::types::CellValue;
//!
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let mut writer = ExcelWriter::new("output.xlsx")?;
//!
//! // Write header
//! writer.write_header(&["Name", "Age", "City"])?;
//!
//! // Write data rows with typed values
//! writer.write_row_typed(&[
//! CellValue::String("Alice".to_string()),
//! CellValue::Int(30),
//! CellValue::String("New York".to_string()),
//! ])?;
//!
//! // Write with formulas
//! writer.write_row_typed(&[
//! CellValue::String("Total".to_string()),
//! CellValue::Formula("=COUNT(B2:B10)".to_string()),
//! CellValue::Empty,
//! ])?;
//!
//! writer.save()?;
//! # Ok(())
//! # }
//! ```
// CSV support
// Cloud storage integration (optional)
// Parquet support (optional)
// Incremental append mode
pub use ;
pub use StreamingReader as ExcelReader; // Re-export for backward compatibility
pub use ;
pub use ExcelWriter;
// CSV exports
pub use CompressionMethod;
pub use CsvReader;
pub use CsvWriter;
pub use HttpCsvWriter;