在Swift中处理Excel(iOS/macOS):库概述与代码示例
表格数据处理是现代应用程序中的关键任务之一。在Apple平台(iOS、macOS、watchOS)上,没有内置的Excel(.xlsx)格式支持,因此开发者需要使用第三方库。在本文中,我们将介绍在Swift中处理Excel的三种主要方法和库:CoreXLSX、SwiftExcel和XLConnect。您将学习如何读取、创建和编辑文件,并获得现成的代码示例。
1. CoreXLSX — 读取和写入.xlsx文件
CoreXLSX 是在Swift中处理Excel最流行的库。它支持读取和写入Office Open XML(OOXML)格式的文件。该库使用纯Swift编写,无需外部依赖。
通过Swift Package Manager安装
// 在Package.swift中添加:dependencies: [ .package(url: "https://github.com/CoreOffice/CoreXLSX.git", from: "0.14.0")]读取Excel文件
import CoreXLSX
guard let filePath = Bundle.main.path(forResource: "data", ofType: "xlsx") else { print("文件未找到") return}
let file = try XLSXFile(filepath: filePath)let sharedStrings = try file?.parseSharedStrings()let worksheets = try file?.parseWorksheetPaths()
for worksheetPath in worksheets ?? [] { let worksheet = try file?.parseWorksheet(at: worksheetPath) let rows = worksheet?.data?.rows ?? [] for row in rows { for cell in row.cells { if let sharedStrings = sharedStrings { let reference = cell.reference let value = cell.stringValue(sharedStrings) ?? cell.value ?? "" print("单元格 \\(reference): \\(value)") } } }}创建新文件
import CoreXLSX
let path = FileManager.default.temporaryDirectory.appendingPathComponent("newFile.xlsx")let file = XLSXFile(filepath: path.path)
// 创建工作表let worksheet = Worksheet(data: DataSheet(rows: [ Row(cells: [ Cell(reference: "A1", value: "姓名"), Cell(reference: "B1", value: "年龄") ]), Row(cells: [ Cell(reference: "A2", value: "安娜"), Cell(reference: "B2", value: "25") ])]))
try file?.write(worksheet: worksheet, at: "xl/worksheets/sheet1.xml")2. SwiftExcel — 轻量级替代方案
SwiftExcel 是一个用于创建Excel文件的极简库。它不支持读取现有文件,但非常适合生成报告和导出数据。
通过CocoaPods安装
pod 'SwiftExcel'创建表格示例
import SwiftExcel
let workbook = Workbook()let sheet = workbook.createSheet(named: "报告")
// 填充标题sheet.write(value: "产品", column: 1, row: 1)sheet.write(value: "价格", column: 2, row: 1)sheet.write(value: "数量", column: 3, row: 1)
// 数据sheet.write(value: "笔记本电脑", column: 1, row: 2)sheet.write(value: 1500.00, column: 2, row: 2)sheet.write(value: 10, column: 3, row: 2)
// 保存let path = FileManager.default.temporaryDirectory.appendingPathComponent("report.xlsx")try workbook.save(to: path)print("文件已保存:\\(path)")3. XLConnect — 通过OpenXML处理Excel(macOS)
XLConnect 是一个用于macOS的库,它直接使用OpenXML格式。它支持复杂操作:合并单元格、样式、公式和图表。
通过Carthage安装
github "SwiftStudies/XLConnect" ~> 2.0包含公式和样式的示例
import XLConnect
let workbook = Workbook()let sheet = try workbook.createShee