Spreadsheet +

A comprehensive and fluent way to interact with spreadsheets with BoxLang

A powerful BoxLang module for creating, reading, and manipulating Excel spreadsheet files.


🎯 Three Ways to Work with Spreadsheets

The BoxLang Spreadsheet Module (bx-spreadsheet) offers three distinct APIs to suit different coding styles and migration scenarios:

API Type
Entry Point
Status
Use Case
Documentation

Fluent API ✨

Spreadsheet()

βœ… Recommended

Modern chainable interface for new code

BIF Functions πŸ“š

SpreadsheetNew(), etc.

πŸ”„ CFML Compatibility

Migration from Adobe ColdFusion/Lucee

Component Tag 🏷️

<bx:spreadsheet>

πŸ”„ CFML Compatibility

Legacy tag-based code migration

πŸ’‘ For new code, we strongly recommend using the Fluent API which provides better readability, maintainability, and modern method chaining.


✨ Features

  • ✨ Fluent Method Chaining - Intuitive, readable code with chainable methods

  • πŸ“Š Multiple Formats - Support for .xls (binary) and .xlsx (XML) formats

  • 🎨 Rich Formatting - Fonts, colors, borders, alignments, and cell styles

  • πŸ”’ Formula Support - Set, evaluate, and recalculate Excel formulas

  • πŸ“ˆ Data Import/Export - Convert to/from JSON, CSV, Query, and Array formats

  • πŸ–ΌοΈ Image Embedding - Add images to spreadsheets with positioning control

  • πŸ” Password Protection - Secure spreadsheet files with passwords

  • πŸ“„ Multi-Sheet Support - Create, manage, copy, and manipulate multiple worksheets

  • πŸš€ High Performance - Built on Apache POI for reliable, efficient processing

  • πŸ”§ Comprehensive API - 85+ BIF functions and full component support

  • πŸ€– Automatic Resource Management - No need to manually close workbooks

  • ❄️ Freeze Panes - Lock rows/columns for better viewing

  • πŸ“ Auto-sizing - Automatically adjust column widths

  • πŸ”— Hyperlinks - Add and manage cell hyperlinks

  • πŸ’¬ Comments - Add cell comments with rich formatting

  • πŸ“Ž Merge Cells - Combine cells for better layout

  • πŸš€ Large File Streaming - Memory-efficient processing of large spreadsheets using Consumer callbacks


πŸ“‹ Requirements

  • BoxLang Runtime 1.0.0 or higher

  • BoxLang+ License - This module requires a BoxLang+ license


πŸ“¦ Installation

Using CommandBox:


πŸš€ Quick Start

Create Your First Spreadsheet (Fluent API)

Quick Examples


πŸ“š Documentation

Getting Started

Quick StartUser Guide

Guides

FormattingFormulasData ExportAdvanced FeaturesExamples

API Reference

Reference

πŸ” Quick Reference

The modern, chainable interface for working with spreadsheets:

Complete Documentation: Fluent API Reference

πŸ“š Built-in Functions (CFML Migration)

Traditional function-based approach for migrating from Adobe ColdFusion or Lucee:

Complete Documentation: BIF Reference

🏷️ Component Tag (Legacy Migration)

Tag-based approach for migrating legacy CFML code:

Complete Documentation: Component Reference


πŸ“– API Documentation

Complete JavaDoc API documentation with detailed method signatures, parameters, and return types:

πŸ“š BoxLang Spreadsheet Module API Docs


🎯 Key Concepts

Fluent API Benefits

The Fluent API provides several advantages over traditional approaches:

  • Method Chaining - Chain operations for readable, maintainable code

  • Automatic Resource Management - No need to manually close workbooks

  • Modern Syntax - Clean, intuitive interface

  • Better IDE Support - Enhanced autocomplete and type hints

File Formats

  • .xlsx (XML Format) - Modern Excel format, default

  • .xls (Binary Format) - Legacy Excel format for compatibility

Common Operations

Operation
Fluent API
BIF Equivalent

Create new

Spreadsheet()

SpreadsheetNew()

Load file

Spreadsheet("file.xlsx")

SpreadsheetRead()

Set cell

.setCellValue(1, 1, "Value")

SpreadsheetSetCellValue()

Add row

.addRow(["A", "B"])

SpreadsheetAddRow()

Save

.save("file.xlsx")

SpreadsheetWrite()

Export

.toArray()

N/A


πŸ’‘ Migration Guide

From Adobe ColdFusion / Lucee

If you're migrating from ACF or Lucee:

  1. Start with BIFs - Use the BIF Reference for drop-in compatibility

  2. Gradually adopt Fluent API - Each BIF page shows the Fluent API equivalent

  3. Update incrementally - No need to refactor everything at once

Example Migration:


Last updated

Was this helpful?