Trabalhando com Excel em Swift (iOS/macOS): bibliotecas e exemplos de código
O desenvolvimento de aplicativos para iOS e macOS frequentemente exige integração com o formato Excel (.xlsx, .xls). As ferramentas nativas da Apple não fornecem uma API direta para trabalhar com esses arquivos, então os desenvolvedores usam bibliotecas de terceiros. Neste artigo, veremos três opções populares: CoreXLSX, xlsxwriter e SwiftCSV, além de apresentar exemplos práticos para leitura e gravação de dados.
1. CoreXLSX — leitura e gravação de .xlsx
CoreXLSX é uma biblioteca de código aberto, escrita inteiramente em Swift. Ela é baseada no formato interno ZIP (já que .xlsx é um arquivo ZIP com arquivos XML). Suporta leitura, gravação e edição de planilhas, células e estilos.
Instalação: via Swift Package Manager (SPM), adicione o pacote https://github.com/CoreOffice/CoreXLSX.git.
Exemplo: leitura de dados do Excel
import CoreXLSX
func readExcelExample() { guard let filePath = Bundle.main.path(forResource: "data", ofType: "xlsx"), let data = try? Data(contentsOf: URL(fileURLWithPath: filePath)), let file = try? XLSXFile(data: data) else { print("Não foi possível carregar o arquivo") return } do { let sharedStrings = try file.parseSharedStrings() let worksheet = try file.parseWorksheet(at: "xl/worksheets/sheet1.xml") for row in worksheet.data?.rows ?? [] { var rowValues: [String] = [] for cell in row.cells { if let stringRef = cell.stringValue(sharedStrings) { rowValues.append(stringRef) } else if let value = cell.value { rowValues.append(value) } else { rowValues.append("") } } print(rowValues.joined(separator: ", ")) } } catch { print("Erro de parsing: \\(error)") }}2. xlsxwriter — criação de arquivos Excel em Swift
xlsxwriter é um wrapper para a biblioteca libxlsxwriter (implementação em C). Permite criar arquivos .xlsx com formatação, fórmulas e gráficos. Ideal para geração de relatórios no macOS e iOS.
Instalação: via CocoaPods (pod 'xlsxwriter') ou SPM.
Exemplo: criação de um arquivo simples
import xlsxwriter
func createExcelExample() { let documentDirectory = FileManager.default.temporaryDirectory let fileURL = documentDirectory.appendingPathComponent("report.xlsx") let workbook = Workbook(path: fileURL.path) let sheet = workbook.addWorksheet(named: "Relatório") // Cabeçalhos sheet.writeString("Nome", at: column: 0, row: 0) sheet.writeString("Idade", at: column: 1, row: 0) sheet.writeString("Cidade", at: column: 2, row: 0) // Dados sheet.writeString("Ana", at: column: 0, row: 1) sheet.writeNumber(28, at: column: 1, row: 1) sheet.writeString("Moscou", at: column: 2, row: 1) sheet.writeString("Ivan", at: column: 0, row: 2) sheet.writeNumber(35, at: column: 1, row: 2) sheet.writeString("São Petersburgo", at: column: 2, row: 2) workbook.close() print("Arquivo criado: \\(fileURL)")}3. SwiftCSV — trabalho com CSV (alternativa ao Excel)
Se você não precisa do formato completo .xlsx, SwiftCSV é uma biblioteca leve para leitura e gravação de arquivos CSV. O CSV pode ser facilmente aberto no Excel e em outros editores de planilhas.
Instalação: via SPM: https://github.com/swiftcsv/SwiftCSV.git.
Exemplo: leitura e gravação de CSV
import SwiftCSV
func csvExample() { // Leitura guard let csvURL = Bundle.main.url(forResource: "data", with Também na biblioteca
Registro de Logs para TypeScript: Biblioteca Winston
GraphQL para C# (.NET): Guia Completo da Biblioteca GraphQL.NET
Processamento de imagens em Node.js: redimensionar e cortar com Sharp e Jimp