Trabajo con Excel en Swift (iOS/macOS): Revisión de bibliotecas y ejemplos de código
El procesamiento de datos tabulares es una de las tareas clave en las aplicaciones modernas. En las plataformas de Apple (iOS, macOS, watchOS) no hay soporte integrado para el formato Excel (.xlsx), por lo que los desarrolladores utilizan bibliotecas de terceros. En este artículo, analizaremos tres enfoques y bibliotecas principales para trabajar con Excel en Swift: CoreXLSX, SwiftExcel y XLConnect. Aprenderá a leer, crear y editar archivos, y también obtendrá ejemplos de código listos para usar.
1. CoreXLSX — lectura y escritura de archivos .xlsx
CoreXLSX es la biblioteca más popular para trabajar con Excel en Swift. Admite la lectura y escritura de archivos en formato Office Open XML (OOXML). La biblioteca está escrita en Swift puro y no requiere dependencias externas.
Instalación mediante Swift Package Manager
// En Package.swift agregue:dependencies: [ .package(url: "https://github.com/CoreOffice/CoreXLSX.git", from: "0.14.0")]Lectura de un archivo Excel
import CoreXLSX
guard let filePath = Bundle.main.path(forResource: "data", ofType: "xlsx") else { print("Archivo no encontrado") return}
let file = try XLSXFile(filepath: filePath)let sharedStrings = try file?.parseSharedStrings()let worksheets = try file?.parseWorksheetPaths()
for worksheetPath in worksheets ?? [] { let worksheet = try file?.parseWorksheet(at: worksheetPath) let rows = worksheet?.data?.rows ?? [] for row in rows { for cell in row.cells { if let sharedStrings = sharedStrings { let reference = cell.reference let value = cell.stringValue(sharedStrings) ?? cell.value ?? "" print("Celda \\(reference): \\(value)") } } }}Creación de un nuevo archivo
import CoreXLSX
let path = FileManager.default.temporaryDirectory.appendingPathComponent("newFile.xlsx")let file = XLSXFile(filepath: path.path)
// Creamos una hoja de trabajolet worksheet = Worksheet(data: DataSheet(rows: [ Row(cells: [ Cell(reference: "A1", value: "Nombre"), Cell(reference: "B1", value: "Edad") ]), Row(cells: [ Cell(reference: "A2", value: "Ana"), Cell(reference: "B2", value: "25") ])]))
try file?.write(worksheet: worksheet, at: "xl/worksheets/sheet1.xml")2. SwiftExcel — alternativa ligera
SwiftExcel es una biblioteca minimalista para crear archivos Excel. No admite la lectura de archivos existentes, pero es ideal para generar informes y exportar datos.
Instalación mediante CocoaPods
pod 'SwiftExcel'Ejemplo de creación de tabla
import SwiftExcel
let workbook = Workbook()let sheet = workbook.createSheet(named: "Informe")
// Rellenamos los encabezadossheet.write(value: "Producto", column: 1, row: 1)sheet.write(value: "Precio", column: 2, row: 1)sheet.write(value: "Cantidad", column: 3, row: 1)
// Datossheet.write(value: "Portátil", column: 1, row: 2)sheet.write(value: 1500.00, column: 2, row: 2)sheet.write(value: 10, column: 3, row: 2)
// Guardamoslet path = FileManager.default.temporaryDirectory.appendingPathComponent("report.xlsx")try workbook.save(to: path)print("Archivo guardado: \\(path)")3. XLConnect — trabajo con Excel mediante OpenXML (macOS)
XLConnect es una biblioteca para macOS que utiliza el formato OpenXML directamente. Admite operaciones complejas: combinación de celdas, estilos, fórmulas y gráficos.
Instalación mediante Carthage
github "SwiftStudies/XLConnect" ~> 2.0Ejemplo con fórmulas y estilos
import XLConnect
let workbook = Workbook()let sheet = try workbook.createShee