1

我希望能够向 libxl 添加一些简单的公式,例如加法和减法,只是不知道该怎么做。只是想知道如何添加简单的加法和减法公式。

这是我的代码:

- (IBAction)createExcel:(id)sender
{
    NSLog(@"createExcel");

    BookHandle book = xlCreateBook(); // use xlCreateXMLBook() for working with xlsx files

    SheetHandle sheet = xlBookAddSheet(book, "Sheet1", NULL);

这些是我希望公式更改的数字。(100 和 150)

  xlSheetWriteStr(sheet, 1, 0, 100, 0);
  xlSheetWriteStr(sheet, 1, 0, 150, 0);


          NSString *documentPath =
    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
    NSString *filename = [documentPath stringByAppendingPathComponent:@"insuranceclaim.xls"];

    xlBookSave(book, [filename UTF8String]);

    xlBookRelease(book);

    if (![MFMailComposeViewController canSendMail]) {
        //Show alert that device cannot send email, this is because an email account     hasn't been setup.
    }

    else {

        //**EDIT HERE**
        //Use this to retrieve your recently saved file

        NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
        NSString *filename = [documentPath stringByAppendingPathComponent:@"insuranceclaim.xls"];

        //**END OF EDIT**

        NSString *mimeType = @"application/vnd.ms-excel"; //This should be the MIME type for els files. May want to double check.
        NSData *fileData = [NSData dataWithContentsOfFile:filename];
        NSString *fileNameWithExtension =   self.personFirstnameTextField.text; //This is what you want the file to be called on the email along with it's extension:

        //If you want to then delete the file:
        NSError *error;
        if (![[NSFileManager defaultManager] removeItemAtPath:filename error:&error])
            NSLog(@"ERROR REMOVING FILE: %@", [error localizedDescription]);


    }


}
4

2 回答 2

1

对于抱怨我们应该“阅读文档”的人来说,主要问题是 Objective-C 中没有示例,仅适用于普通的旧 C。

这对我有用,我构建了一个公式字符串以在 D 列中添加两行,然后应用它。

NSString *formula=[NSString stringWithFormat:@"SUM(D%d:D%d)",startRow,endrow]; 
xlSheetWriteFormula(sheet, row, 2, [formula cStringUsingEncoding: NSUTF8StringEncoding], cellFormat);

cellFormat 是我为所需的字体和边框效果定义的格式。

我猜人们遇到的问题是字符串编码。

我会敦促任何购买了 LibXL 许可证的人鼓励开发人员也为 Objective-C 开发示例代码。我们已经走了好几年了,没有它。

于 2015-05-18T21:00:23.750 回答
0

添加公式很简单。这是 LibXl for iOS 下载附带的示例应用程序的相关行:

xlSheetWriteFormula(sheet, 6, 1, "SUM(B5:B6)", boldFormat);

看起来唯一需要记住的是公式必须是 C 字符串,而不是 Objective-C 字符串。这是他们文档中的相关段落:http ://www.libxl.com/spreadsheet.html#writeFormula

于 2014-08-30T19:54:10.943 回答