Ios 带JXLS的xls中的可单击链接

Ios 带JXLS的xls中的可单击链接,ios,jxls,xlslib,Ios,Jxls,Xlslib,我正在使用JXLS v1.0在我的ios项目中创建xls文件,我不知道如何在电子表格中的某个单元格中创建可单击的链接,有没有办法使用JXLS实现这一点,或者可能存在其他一些免费的xls框架如果可能,您应该迁移到JXLS-2。 在Jxls-2中,创建超链接与在Excel模板中创建以下标记一样简单 ${util.hyperlink(linkAddress,linkTitle)} linkAddress和linkTitle是Jxls上下文中包含超链接URL和名称的变量的名称。 在project中检查

我正在使用JXLS v1.0在我的ios项目中创建xls文件,我不知道如何在电子表格中的某个单元格中创建可单击的链接,有没有办法使用JXLS实现这一点,或者可能存在其他一些免费的xls框架

如果可能,您应该迁移到JXLS-2。 在Jxls-2中,创建超链接与在Excel模板中创建以下标记一样简单

${util.hyperlink(linkAddress,linkTitle)}
linkAddress和linkTitle是Jxls上下文中包含超链接URL和名称的变量的名称。 在project中检查以下内容以查看其实际操作

对于JXLS1.x,您应该使用公式方法来创建超链接。在标记中应该有这样的内容

$[HYPERLINK(A1,A2)]

在单元格A1和A2中,您应该有链接地址和链接标题。如果它们是动态的,您也可以使用jxls输出它们。例如,在A1中可以有
${link.url}
,在A2中可以有
${link.title}
,其中link是bean上下文中的一个对象,具有url和title属性。当然,您可以使用任何单元格,而不是A1和A2。

好的,我找到了解决JXLS ios框架链接问题的方法

问题出现在Objective-C包装器中,没有方法在此包装器中的某些单元格中添加链接,但工作表类中有“hyperLink”方法,因此决定在JXLSWorkSheet类中创建一个包装器方法(可以在Objective-C代码中使用)。实现如下所示: JXLSWorkSheet.h: 只需在标题中添加此方法

    - (void)addLink:(JXLSCell *)cell link:(NSString *)link;
JXLSWorkSheet.m: 在end语句之前添加实现体

- (void)addLink:(JXLSCell *)cell link:(NSString *)link
  {
    cell_t          *cl;
    unichar         *uniName;
    ustring         uniStr;
    size_t          len;

    len = [link length];

    uniName = (unichar *)calloc(len+1, sizeof(unichar));
    [link getCharacters:uniName];
    uniStr.assign(uniName);
    free(uniName);

    cl = (xlslib_core::cell_t *)cell.cell;

    _workSheet->hyperLink(cl, uniStr, uniName);
}

在我的实现中,我使用与标签和链接相同的文本,如果您想在电子表格中使用其他文本作为超链接的标签,请在此方法中添加一个参数

用法非常简单:只需获取要包含url的单元格并向其添加链接。见下面的清单

 JXLSCell *cell;
 cell = [workSheet setCellAtRow:rowCount column:1 toString:@"http://stackoverflow.com/"];
 [workSheet addLink:cell link:@"http://stackoverflow.com/"];

我希望它能帮助您在电子表格中创建超链接。

此代码更正确:

    - (void)addLink:(JXLSCell *)cell link:(NSString *)link
{
    cell_t          *cl;
    unichar         *uniName;
    ustring         uniStr;
    size_t          len;

    len = [link length];

    /*uniName = (unichar *)calloc(len+1, sizeof(unichar));
    [link getCharacters:uniName];
    uniStr.assign(uniName);
    free(uniName);*/

    @autoreleasepool {
        uniName = (unichar *)[link cStringUsingEncoding:NSUnicodeStringEncoding];
        uniStr.assign(uniName);
    }

    cl = (xlslib_core::cell_t *)cell.cell;

    _workSheet->hyperLink(cl, uniStr, uniName);

}

谢谢你的建议,但我在ios上工作,我找不到适用于ios的Jxls-2。