0

我正在使用 JXLS v1.0 在我的 ios 项目中创建 xls 文件,但我无法理解如何在电子表格的某些单元格中创建可点击的链接,有什么方法可以使用 JXLS 进行此操作,或者可能有存在其他一些免费的 xls 框架

4

3 回答 3

1

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

${util.hyperlink(linkAddress,linkTitle)}

linkAddresslinkTitle是 Jxls 上下文中包含超链接 URL 和名称的变量的名称。检查jxls-demo项目中的以下XlsCommentBuilderDemo 示例以查看它的实际效果。

使用 Jxls 1.x,您应该使用公式方法来创建超链接。在你的标记中,你应该有这样的东西

$[HYPERLINK(A1,A2)]

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

于 2015-06-26T21:18:50.007 回答
1

好的,我找到了解决 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/"];

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

于 2015-06-29T12:33:29.860 回答
0

这段代码更正确:

    - (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);

}
于 2018-07-06T07:17:13.510 回答