iOS プロジェクトで xls ファイルを作成するために JXLS v1.0 を使用していますが、スプレッドシートの一部のセルでクリック可能なリンクを作成する方法がわかりません。JXLS でこれを作成する方法はありますか。他にもいくつかの無料の xls フレームワークが存在します
3 に答える
可能であれば、Jxls-2 に移行する必要があります。Jxls-2 では、ハイパーリンクの作成は、Excel テンプレートに次のマークアップを含めるのと同じくらい簡単です。
${util.hyperlink(linkAddress,linkTitle)}
linkAddressとlinkTitleは、ハイパーリンクの URL と名前を含む Jxls コンテキスト内の変数の名前です。jxls-demoプロジェクトの次のXlsCommentBuilderDemo の例をチェックして、動作を確認してください。
Jxls 1.x では、数式アプローチを使用してハイパーリンクを作成する必要があります。マークアップには、次のようなものが必要です
$[HYPERLINK(A1,A2)]
セルA1とA2には、リンク アドレスとリンク タイトルが必要です。それらが動的な場合は、jxls で出力することもできます。たとえば、A1では使用でき${link.url}
、A2では、リンクがプロパティurlおよびtitle${link.title}
を持つ Bean コンテキスト内のオブジェクトである場合に使用できます。確かに、 A1とA2の代わりに任意のセルを使用できます。
OK、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);
}
私の実装では、ラベルとリンクと同じテキストを使用し、スプレッドシートのハイパーリンクのラベルとして他のテキストを使用する場合は、このメソッドにもう 1 つのパラメーターを追加します。
使い方はとても簡単です: URL を入れたいセルを取り、それにリンクを追加するだけです。以下のリストを参照してください。
JXLSCell *cell;
cell = [workSheet setCellAtRow:rowCount column:1 toString:@"http://stackoverflow.com/"];
[workSheet addLink:cell link:@"http://stackoverflow.com/"];
スプレッドシートでハイパーリンクを作成するのに役立つことを願っています。