excelstream 0.1.0

High-performance streaming Excel library - Read/write large XLSX files with memory-efficient streaming
Documentation
# Quick Start Guide

## Quick Installation

```bash
cd rust-excelize
cargo build --release
```

## Test the Library

```bash
cargo test
```

Output:
```
running 13 tests
test result: ok. 13 passed
```

## Run Examples

### 1. Write Basic Excel File

```bash
cargo run --example basic_write
```

Creates `examples/output.xlsx` with sample data.

### 2. Read Excel File

```bash
cargo run --example basic_read
```

Output:
```
Available sheets:
  1. Sheet1

Reading first sheet:
Row 1: ["ID", "Name", "Email", "Age", "Salary"]
Row 2: ["1", "Alice Johnson", "alice@example.com", "30", "75000"]
...
```

### 3. Streaming with Large Files

```bash
# Create file with 10,000 rows
cargo run --example streaming_write

# Read and process with streaming
cargo run --example streaming_read
```

### 4. Multiple Sheets

```bash
cargo run --example multi_sheet
```

Creates file with 3 sheets: Sales, Employees, Products.

### 5. Convert CSV to Excel

```bash
cargo run --example csv_to_excel
```

Converts `examples/data.csv` to Excel.

## API Usage

### Reading Excel

```rust
use excelstream::ExcelReader;

let mut reader = ExcelReader::open("data.xlsx")?;

// List sheets
for name in reader.sheet_names() {
    println!("Sheet: {}", name);
}

// Read with streaming
for row_result in reader.rows("Sheet1")? {
    let row = row_result?;
    println!("{:?}", row.to_strings());
}
```

### Writing Excel

```rust
use excelstream::ExcelWriter;

let mut writer = ExcelWriter::new("output.xlsx")?;

// Write header
writer.write_header(&["ID", "Name", "Email"])?;

// Write data
writer.write_row(&["1", "Alice", "alice@example.com"])?;
writer.write_row(&["2", "Bob", "bob@example.com"])?;

// Save file
writer.save()?;
```

### Typed Values

```rust
use excelstream::{ExcelWriter, types::CellValue};

let mut writer = ExcelWriter::new("typed.xlsx")?;

writer.write_row_typed(&[
    CellValue::String("Alice".to_string()),
    CellValue::Int(30),
    CellValue::Float(75000.50),
    CellValue::Bool(true),
])?;

writer.save()?;
```

## Benchmark

```bash
cargo bench
```

Performance on 1,000 row file:
- **Write**: ~600 MB/s
- **Read**: ~800 MB/s
- **Memory**: <50 MB (streaming)

## Documentation

- **README.md** - Overview and quick start
- **docs/ARCHITECTURE.md** - Detailed architecture
- **docs/ADVANCED.md** - Advanced guide
- **CONTRIBUTING.md** - Contribution guidelines

## Project Structure

```
rust-excelize/
├── src/
│   ├── lib.rs          # Entry point
│   ├── error.rs        # Error handling
│   ├── types.rs        # Data types
│   ├── reader.rs       # Excel reader
│   └── writer.rs       # Excel writer
├── examples/           # 6 usage examples
├── tests/              # Integration tests
├── benches/            # Benchmarks
└── docs/               # Documentation
```

## Features

✅ **Streaming I/O** - Efficient processing of large files  
✅ **Multi-format** - XLSX, XLS, ODS  
✅ **Type-safe** - Strong typing with Rust  
✅ **Multi-sheet** - Multiple sheets in workbook  
✅ **Formatting** - Bold headers, column width  
✅ **Error handling** - Comprehensive error types  
✅ **Zero-copy** - Optimized memory allocation  
✅ **Documentation** - Complete docs and examples  

## Main Dependencies

- **calamine** 0.32 - Excel reader
- **rust_xlsxwriter** 0.92 - Excel writer  
- **thiserror** 2.0 - Error handling

## Next Steps

1. Xem examples trong `examples/`
2. Đọc API docs: `cargo doc --open`
3. Đọc advanced guide: `docs/ADVANCED.md`
4. Tham khảo architecture: `docs/ARCHITECTURE.md`

## Support

- 📧 Email: your.email@example.com
- 🐛 Issues: GitHub Issues
- 📖 Docs: [Documentation]https://docs.rs/rust-excelize

## License

MIT License - Free to use and modify