在带有 JXLS 的 xls 中可点击 link
Clickable link in xls with JXLS
我正在使用 JXLS v1.0 在我的 ios 项目中创建 xls 文件,但我不明白如何在电子表格的某些单元格中制作可点击的 link,是有什么方法可以用 JXLS 做到这一点,或者可能存在其他一些免费的 xls 框架
如果可能,您应该迁移到 Jxls-2。
在 Jxls-2 中,创建 hyperlink 就像在 Excel 模板
中添加以下标记一样简单
${util.hyperlink(linkAddress,linkTitle)}
linkAddress 和 linkTitle 是包含 hyperlink URL 和名字。
检查以下 XlsCommentBuilderDemo example in jxls-demo 项目以查看它的运行情况。
对于 Jxls 1.x,您应该使用公式方法来创建 Hyperlink。在你的标记中你应该有这样的东西
$[HYPERLINK(A1,A2)]
在单元格 A1 和 A2 中,您应该有 link 地址和 link 标题。如果它们是动态的,您还可以使用 jxls 输出它们。例如,在 A1 中你可以有 ${link.url}
而在 A2 中你可以有 ${link.title}
where link是 bean 上下文中的 object,具有属性 url 和 title。当然你可以使用任何单元格代替 A1 和 A2.
好的,我找到了解决 JXLS ios 框架的 link 问题的方法。
问题出在 Objective-C 包装器中,没有在该包装器的某些单元格中添加 link 的方法,但在工作表 [=33= 中有 "hyperLink" 方法],因此决定在 class JXLSWorkSheet 中创建一个包装器方法(您可以在 Objective-C 代码中使用它)。实现看起来像:
JXLSWorkSheet.h:
只需在 header
中添加此方法
- (void)addLink:(JXLSCell *)cell link:(NSString *)link;
JXLSWorkSheet.m:
在结束语句前添加实现主体
- (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);
}
在我的实现中,我使用与标签和 link 相同的文本,如果您想使用其他一些文本作为 hyperlink 的标签,请向此方法添加一个参数电子表格。
用法非常简单:您只需在要包含 url 的单元格中添加 link 即可。请参阅下面的清单。
JXLSCell *cell;
cell = [workSheet setCellAtRow:rowCount column:1 toString:@"http://whosebug.com/"];
[workSheet addLink:cell link:@"http://whosebug.com/"];
我希望它能帮助您在电子表格中创建 hyperlink。
这段代码更正确:
- (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);
}
我正在使用 JXLS v1.0 在我的 ios 项目中创建 xls 文件,但我不明白如何在电子表格的某些单元格中制作可点击的 link,是有什么方法可以用 JXLS 做到这一点,或者可能存在其他一些免费的 xls 框架
如果可能,您应该迁移到 Jxls-2。 在 Jxls-2 中,创建 hyperlink 就像在 Excel 模板
中添加以下标记一样简单${util.hyperlink(linkAddress,linkTitle)}
linkAddress 和 linkTitle 是包含 hyperlink URL 和名字。 检查以下 XlsCommentBuilderDemo example in jxls-demo 项目以查看它的运行情况。
对于 Jxls 1.x,您应该使用公式方法来创建 Hyperlink。在你的标记中你应该有这样的东西
$[HYPERLINK(A1,A2)]
在单元格 A1 和 A2 中,您应该有 link 地址和 link 标题。如果它们是动态的,您还可以使用 jxls 输出它们。例如,在 A1 中你可以有 ${link.url}
而在 A2 中你可以有 ${link.title}
where link是 bean 上下文中的 object,具有属性 url 和 title。当然你可以使用任何单元格代替 A1 和 A2.
好的,我找到了解决 JXLS ios 框架的 link 问题的方法。
问题出在 Objective-C 包装器中,没有在该包装器的某些单元格中添加 link 的方法,但在工作表 [=33= 中有 "hyperLink" 方法],因此决定在 class JXLSWorkSheet 中创建一个包装器方法(您可以在 Objective-C 代码中使用它)。实现看起来像: JXLSWorkSheet.h: 只需在 header
中添加此方法 - (void)addLink:(JXLSCell *)cell link:(NSString *)link;
JXLSWorkSheet.m: 在结束语句前添加实现主体
- (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);
}
在我的实现中,我使用与标签和 link 相同的文本,如果您想使用其他一些文本作为 hyperlink 的标签,请向此方法添加一个参数电子表格。
用法非常简单:您只需在要包含 url 的单元格中添加 link 即可。请参阅下面的清单。
JXLSCell *cell;
cell = [workSheet setCellAtRow:rowCount column:1 toString:@"http://whosebug.com/"];
[workSheet addLink:cell link:@"http://whosebug.com/"];
我希望它能帮助您在电子表格中创建 hyperlink。
这段代码更正确:
- (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);
}