以下是在框架头中声明的签名:
const char* XLAPIENTRY xlSheetReadStrA(SheetHandle handle, int row, int col, FormatHandle* format);
http://www.libxl.com/spreadsheet.html
以下是我们当前读取单元格的方式:
func readNillableString(row:Int32, col:Int32) -> String? {
let value:String? = String(format: "%s", xlSheetReadStrA(sheet, row, col, nil) ?? "").trimmingCharacters(in: .whitespacesAndNewlines)
let set = NSMutableCharacterSet.alphanumeric()
set.addCharacters(in: "., +%%()/[]:-_ ®÷")
if self.rangeOfCharacter(from: set.inverted) != nil || self.isEmpty {
return nil
}
if value?.isEmpty == true {
return nil
}
return value
}
但实际上,我们所要做的只是将excel单元格中的值转换为快速字符串
xlSheetReadStrA
在一个空牢房里,拿着它
char*
String
,这是结果:
(lldb) po value
â¿ Optional<String>
- some : "hÿh\u{03}\u{01}"
字符串
如果有一个值,并且
nil
那个
rangeOfCharacter
调用只是确定单元格是否为空的一种方法。。。
有没有人有任何LibXL的经验,或者可以看看这个解析代码,并找出更好的方法来做到这一点?我在想可能有更有效的方法
char* xlSheetReadStrA