在 Swift 中处理 Excel(iOS/macOS):库与代码示例
为 iOS 和 macOS 开发应用程序时,经常需要集成 Excel 格式(.xlsx、.xls)。Apple 的原生工具不提供直接处理这些文件的 API,因此开发者会使用第三方库。本文将介绍三种流行的选择:CoreXLSX、xlsxwriter 和 SwiftCSV,并提供读取和写入数据的实用示例。
1. CoreXLSX — 读取和写入 .xlsx
CoreXLSX 是一个完全用 Swift 编写的开源库。它基于内部 ZIP 格式(因为 .xlsx 是一个包含 XML 文件的 ZIP 归档)。支持读取、写入和编辑工作表、单元格、样式。
安装:通过 Swift Package Manager (SPM) 添加包 https://github.com/CoreOffice/CoreXLSX.git。
示例:从 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("无法加载文件") 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("解析错误:\\(error)") }}2. xlsxwriter — 在 Swift 中创建 Excel 文件
xlsxwriter 是 libxlsxwriter 库(C 语言实现)的封装。允许创建带有格式、公式、图表的 .xlsx 文件。非常适合在 macOS 和 iOS 上生成报告。
安装:通过 CocoaPods (pod 'xlsxwriter') 或 SPM。
示例:创建简单文件
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: "报告") // 标题 sheet.writeString("姓名", at: column: 0, row: 0) sheet.writeString("年龄", at: column: 1, row: 0) sheet.writeString("城市", at: column: 2, row: 0) // 数据 sheet.writeString("安娜", at: column: 0, row: 1) sheet.writeNumber(28, at: column: 1, row: 1) sheet.writeString("莫斯科", at: column: 2, row: 1) sheet.writeString("伊万", at: column: 0, row: 2) sheet.writeNumber(35, at: column: 1, row: 2) sheet.writeString("圣彼得堡", at: column: 2, row: 2) workbook.close() print("文件已创建:\\(fileURL)")}3. SwiftCSV — 处理 CSV(Excel 的替代方案)
如果您不需要完整的 .xlsx 格式,SwiftCSV 是一个轻量级的库,用于读取和写入 CSV 文件。CSV 可以轻松在 Excel 和其他表格编辑器中打开。
安装:通过 SPM:https://github.com/swiftcsv/SwiftCSV.git。
示例:读取和写入 CSV
import SwiftCSV
func csvExample() { // 读取 guard let csvURL = Bundle.main.url(forResource: "data", with