Arbeiten mit Excel in Swift: Bibliotheken und Werkzeuge für iOS und macOS
Bei der Entwicklung von Anwendungen für iOS und macOS besteht häufig die Notwendigkeit, Daten im Excel-Format (XLSX, CSV) zu importieren, exportieren oder zu verarbeiten. Auf der Apple-Plattform gibt es keine integrierte Unterstützung für Excel-Formate, daher verwenden Entwickler Drittanbieter-Bibliotheken. In diesem Artikel werden drei beliebte Werkzeuge behandelt: CoreXLSX, XLSXWriter und SwiftCSV, sowie praktische Codebeispiele in Swift gezeigt.
1. CoreXLSX — Lesen und Schreiben von XLSX
CoreXLSX ist eine leichtgewichtige Bibliothek zum Lesen und Erstellen von XLSX-Dateien. Sie basiert auf dem Open XML-Standard und unterstützt Zeichenfolgen, Zahlen, Daten, Formeln und Stile.
Installation
// Swift Package Managerdependencies: [ .package(url: "https://github.com/CoreOffice/CoreXLSX.git", from: "0.14.0")]Beispiel: Daten aus Excel lesen
import CoreXLSX
func readExcel(path: String) { guard let file = XLSXFile(filepath: path) else { print("Fehler beim Öffnen der Datei") 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("Lesefehler: \\(error)") }}Beispiel: Neue XLSX-Datei erstellen
import CoreXLSX
func createExcel() { let header = ["Name", "Alter", "Stadt"] let data = [ ["Anna", "25", "Moskau"], ["Boris", "30", "Sankt Petersburg"] ] 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("Datei gespeichert") } catch { print("Schreibfehler: \\(error)") }}2. XLSXWriter — schnelles Schreiben großer Dateien
XLSXWriter ist eine Bibliothek, die auf Leistung beim Schreiben ausgelegt ist. Sie eignet sich für den Export von Tausenden von Zeilen und unterstützt Stile, Zellverbünde und Diagramme.
Installation
// Über CocoaPodspod 'XLSXWriter'Beispiel: Daten mit Formatierung schreiben
import XLSXWriter
func writeFormattedExcel() { let workbook = Workbook() let sheet = workbook.addSheet(named: "Bericht") // Stile 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) // Überschriften sheet.write(row: 0, column: 0, value: "Produkt", style: headerStyle) sheet.write(row: 0, column: 1, value: "Preis", style: headerStyle) sheet.write(row: 0, column: 2, value: "Menge Auch in der Bibliothek
XCTest — Testen in Swift (iOS/macOS)
Logging für JavaScript (Node.js): Die besten Lösungen und Bibliotheken
Internationalisierung (i18n) in Java: Vollständiger Leitfaden mit Beispielen
Aufgabenwarteschlangen in Go: Überblick über die Bibliotheken async, gocelery und machinery
PDF-Berichte in Go generieren: Bibliotheksübersicht und Codebeispiele