Ios 带JXLS的xls中的可单击链接
我正在使用JXLS v1.0在我的ios项目中创建xls文件,我不知道如何在电子表格中的某个单元格中创建可单击的链接,有没有办法使用JXLS实现这一点,或者可能存在其他一些免费的xls框架如果可能,您应该迁移到JXLS-2。 在Jxls-2中,创建超链接与在Excel模板中创建以下标记一样简单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中检查
${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。