在 iOS 和 macOS 上使用 Swift 处理 Excel:库与代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 Swift 中处理 Excel:适用于 iOS 和 macOS 的库与工具



在开发 iOS 和 macOS 应用程序时,经常需要导入、导出或处理 Excel 格式(XLSX、CSV)的数据。Apple 平台没有内置对 Excel 格式的支持,因此开发者会使用第三方库。本文将介绍三种流行的工具:CoreXLSX、XLSXWriter 和 SwiftCSV,并提供 Swift 的实际代码示例。



1. CoreXLSX — 读取和写入 XLSX



CoreXLSX 是一个轻量级库,用于读取和创建 XLSX 文件。它基于 Open XML 标准,支持字符串、数字、日期、公式和样式。



安装

// Swift Package Managerdependencies: [    .package(url: "https://github.com/CoreOffice/CoreXLSX.git", from: "0.14.0")]


示例:从 Excel 读取数据

import CoreXLSX

func readExcel(path: String) { guard let file = XLSXFile(filepath: path) else { print("文件打开失败") 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("读取错误:\\(error)") }}


示例:创建新的 XLSX 文件

import CoreXLSX

func createExcel() { let header = ["姓名", "年龄", "城市"] let data = [ ["安娜", "25", "莫斯科"], ["鲍里斯", "30", "圣彼得堡"] ] 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("文件已保存") } catch { print("写入错误:\\(error)") }}


2. XLSXWriter — 快速写入大文件



XLSXWriter 是一个专注于写入性能的库。适用于导出数千行数据,支持样式、单元格合并和图表。



安装

// 通过 CocoaPodspod 'XLSXWriter'


示例:带格式的写入数据

import XLSXWriter

func writeFormattedExcel() { let workbook = Workbook() let sheet = workbook.addSheet(named: "报告") // 样式 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) // 表头 sheet.write(row: 0, column: 0, value: "商品", style: headerStyle) sheet.write(row: 0, column: 1, value: "价格", style: headerStyle) sheet.write(row: 0, column: 2, value: "数量"

推荐