swift - 使用 Swift 更新 Excel 电子表格数据
问题描述
我创建了一个 Xcode 项目,该项目在项目文件夹中有一个电子表格,并且正在使用 xlsxreaderwriter 连接到 Excel 工作表。
我的项目可以从 excel 电子表格中读取并在程序运行时对其进行更新。我的问题是程序没有保存与新数据相关的 Excel 电子表格。我的控制台显示它正在保存,但是当我打开我的实际电子表格文件时,它看起来就像我创建的原始版本。
下面是我创建的两个函数,用于设置单元格引用并保存我放入 viewDidLoad 中的数据。
private func getExcelCells() {
let path: String = Bundle.main.path(forResource: "DatabaseV1", ofType: "xlsx")!
//Open the spreadsheet, get get the first worksheet, and select cell B5
let spreadsheet: BRAOfficeDocumentPackage = BRAOfficeDocumentPackage.open(path)
let sheet: BRASheet = spreadsheet.workbook.sheets[0] as! BRASheet
let worksheet: BRAWorksheet = spreadsheet.workbook.worksheets[0] as! BRAWorksheet
// Creates variables that are type CellModel
var cat1 = CellModel(categoryTitle: "Best DJ", firstCell: worksheet.cell(forCellReference: "B5"), secondCell: worksheet.cell(forCellReference: "B6"), thirdCell: worksheet.cell(forCellReference: "B7"), fourthCell: worksheet.cell(forCellReference: "B8"))
let cat2 = CellModel(categoryTitle: "Best SGA", firstCell: worksheet.cell(forCellReference: "E5"), secondCell: worksheet.cell(forCellReference: "E6"), thirdCell: worksheet.cell(forCellReference: "E7"), fourthCell: worksheet.cell(forCellReference: "E8"))
let cat3 = CellModel(categoryTitle: "Best Greek Organization", firstCell: worksheet.cell(forCellReference: "H5"), secondCell: worksheet.cell(forCellReference: "H6"), thirdCell: worksheet.cell(forCellReference: "H7"), fourthCell: worksheet.cell(forCellReference: "H8"))
// Add the variables created above to the array excelCells
excelCells += [cat1, cat2, cat3]
cat1.cellOne.setStringValue(nominees.optionA)
let data = worksheet.cell(forCellReference: "A5").stringValue()
print(cat1.cellOne.stringValue())
print(data)
}
private func saveExcelFile() {
let path: String = Bundle.main.path(forResource: "DatabaseV1", ofType: "xlsx")!
let spreadsheet: BRAOfficeDocumentPackage = BRAOfficeDocumentPackage.open(path)
let sheet: BRASheet = spreadsheet.workbook.sheets[0] as! BRASheet
let worksheet: BRAWorksheet = spreadsheet.workbook.worksheets[0] as! BRAWorksheet
worksheet.save()
spreadsheet.save()
}
这是我从控制台返回的结果,但是当我再次从计算机文件中打开电子表格时,它没有更新。
some("2014-15")
Optional("Nominee 1 ")
Best DJ : Best DJ
Best SGA : Best SGA
Best Greek Organization : Best Greek Organization
TVC Data has nominees 2014-15
2018-05-16 12:51:48.375702-0400 xlsxreaderwriter[18952:668623] Saving target : worksheets/sheet1.xml
2018-05-16 12:51:48.432046-0400 xlsxreaderwriter[18952:668623] Saving target : [Content_Types].xml
2018-05-16 12:51:48.437702-0400 xlsxreaderwriter[18952:668623] Saving target : docProps/app.xml
2018-05-16 12:51:48.440162-0400 xlsxreaderwriter[18952:668623] Saving target : docProps/core.xml
2018-05-16 12:51:48.442317-0400 xlsxreaderwriter[18952:668623] Saving target : styles.xml
2018-05-16 12:51:48.471786-0400 xlsxreaderwriter[18952:668623] Saving target : theme/theme1.xml
2018-05-16 12:51:48.474184-0400 xlsxreaderwriter[18952:668623] Saving target : worksheets/sheet1.xml
2018-05-16 12:51:48.519212-0400 xlsxreaderwriter[18952:668623] Saving target : sharedStrings.xml
2018-05-16 12:51:48.526377-0400 xlsxreaderwriter[18952:668623] Saving target : _rels/workbook.xml.rels
2018-05-16 12:51:48.530246-0400 xlsxreaderwriter[18952:668623] Saving target : xl/workbook.xml
2018-05-16 12:51:48.540307-0400 xlsxreaderwriter[18952:668623] Saving target : _rels/.rels
2014-15 2015-16 2016-17 2017-18
解决方案
推荐阅读
- sql - 执行此 sql 后不再从套接字读取数据
- autocad-plugin - 在 AutoLISP 中列出并提示特定对象实体
- mysql - 如何以与 Hibernate 模型中指定的顺序相同的顺序组织数据库列?
- php - Laravel 返回 response()->json() 反对仅返回一个数组
- node.js - Firebase 管理员 SDK 角色
- list - 在 sass (scss) 中获取列表的最大值或最小值
- javascript - SetTimeout 在 Firefox 中的调用之间滞后
- java - 在 Linux 上使用 Java 透明的窗口截屏时出现问题
- c++ - 无法使用“generate_vcxproj.bat”构建 GDAL Visual Studio 项目
- sql - Oracle sql将每个第一个重复标记为true,其他标记为false