首页 > 解决方案 > 使用 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

标签: swiftexceldatabase

解决方案


推荐阅读