Travailler avec Excel en Swift sur iOS et macOS : bibliothèques et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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)

Recommendations