Travailler avec Excel en Swift : bibliothèques et outils pour iOS et macOS
Lors du développement d'applications pour iOS et macOS, il est souvent nécessaire d'importer, d'exporter ou de traiter des données au format Excel (XLSX, CSV). La plateforme Apple ne prend pas en charge nativement les formats Excel, c'est pourquoi les développeurs utilisent des bibliothèques tierces. Dans cet article, nous allons examiner trois outils populaires : CoreXLSX, XLSXWriter et SwiftCSV, et fournir des exemples pratiques de code en Swift.
1. CoreXLSX — lecture et écriture de XLSX
CoreXLSX est une bibliothèque légère pour lire et créer des fichiers XLSX. Elle est basée sur la norme Open XML et prend en charge les chaînes, les nombres, les dates, les formules et les styles.
Installation
// Swift Package Managerdependencies: [ .package(url: "https://github.com/CoreOffice/CoreXLSX.git", from: "0.14.0")]Exemple : lecture de données depuis Excel
import CoreXLSX
func readExcel(path: String) { guard let file = XLSXFile(filepath: path) else { print("Erreur d'ouverture du fichier") return } do { for path in try file.parseWorksheetPaths() { let worksheet = try file.parseWorksheet(at: path) let rows = worksheet.data?.rows ?? [] for row in rows { let values = row.cells.compactMap { $0.value } print(values.joined(separator: "\\t")) } } } catch { print("Erreur de lecture : \\(error)") }}Exemple : création d'un nouveau fichier XLSX
import CoreXLSX
func createExcel() { let header = ["Nom", "Âge", "Ville"] let data = [ ["Anna", "25", "Moscou"], ["Boris", "30", "Saint-Pétersbourg"] ] var sharedStrings = SharedStrings() let headerRefs = header.map { sharedStrings.append(string: $0) } let dataRefs = data.map { row in row.map { sharedStrings.append(string: $0) } } let headerRow = Row(cells: headerRefs.enumerated().map { (index, ref) in Cell(reference: "\\(Character(UnicodeScalar(65 + index)!))1", type: .string, value: ref) }) let dataRows = dataRefs.enumerated().map { (rowIndex, row) in Row(cells: row.enumerated().map { (colIndex, ref) in let colRef = Character(UnicodeScalar(65 + colIndex)!) return Cell(reference: "\\(colRef)\\(rowIndex + 2)", type: .string, value: ref) }) } let worksheet = Worksheet(data: Data(rows: [headerRow] + dataRows)) let file = XLSXFile(sharedStrings: sharedStrings, worksheets: [worksheet]) do { try file.write(to: URL(fileURLWithPath: "/tmp/example.xlsx")) print("Fichier enregistré") } catch { print("Erreur d'écriture : \\(error)") }}2. XLSXWriter — écriture rapide de gros fichiers
XLSXWriter est une bibliothèque axée sur les performances lors de l'écriture. Elle est adaptée à l'exportation de milliers de lignes, prend en charge les styles, la fusion de cellules et les diagrammes.
Installation
// Via CocoaPodspod 'XLSXWriter'Exemple : écriture de données avec mise en forme
import XLSXWriter
func writeFormattedExcel() { let workbook = Workbook() let sheet = workbook.addSheet(named: "Rapport") // Styles let headerStyle = CellStyle() headerStyle.font = Font(name: "Helvetica", size: 14, bold: true) headerStyle.fill = Fill(color: .lightGray) let dataStyle = CellStyle() dataStyle.font = Font(name: "Helvetica", size: 12) dataStyle.border = Border(top: .thin, bottom: .thin) // En-têtes sheet.write(row: 0, column: 0, value: "Produit", style: headerStyle) sheet.write(row: 0, column: 1, value: "Prix", style: headerStyle) sheet.write(row: 0, column: 2, value: "Quantité", style: headerStyle) Aussi dans la bibliothèque
Client Elasticsearch pour C# (.NET) : NEST et Elastic.Clients.Elasticsearch
Jetons JWT en C++ : implémentation et vérification avec jwt-cpp
Client Redis pour Go (Golang) — go-redis et radix
Générateur de codes QR en Kotlin : création et personnalisation de codes QR
Sphinx – génération de documentation