IFilePathProviderインターフェースを介してエクスポートされたワークシートのHTMLファイルパスを提供する

可能な使用シナリオ

例えば、複数のシートを持つエクセルファイルがあり、それぞれのシートを個別のHTMLファイルにエクスポートしたいとします。もし、いくつかのシートに他のシートへのリンクがある場合、そのリンクはエクスポートされたHTMLでは壊れた状態になります。この問題に対処するために、Aspose.CellsはIFilePathProvider インターフェースを提供しており、これを実装して壊れたリンクを修正できます。

IFilePathProviderインターフェースを介してエクスポートされたワークシートのHTMLファイルパスを提供する

以下のコードで使用されたサンプルエクセルファイルとそのエクスポートされたHTMLファイルをダウンロードしてください。これらのファイルはすべてTempディレクトリ内にあります。それらをC:ドライブに解凍すればC:\Tempディレクトリになります。その後、ブラウザでSheet1.htmlファイルを開き、それに含まれるリンクをクリックしてください。これらのリンクはSheet1.html内にあるこれらの2つのエクスポートされたHTMLワークシートを参照しています。これらのワークシートはC:\Temp\OtherSheetsディレクトリ内にあります。

 file:///C:/Temp/OtherSheets/Sheet2.html#RANGE!A1

file:///C:/Temp/OtherSheets/Sheet3.html#RANGE!A1

以下のスクリーンショットはC:\Temp\Sheet1.htmlとそのリンクの外観を示しています

todo:image_alt_text

以下のスクリーンショットはHTMLソースを示しています。リンクがC:\Temp\OtherSheetsディレクトリを参照するように修正されたことがわかります。これはIFilePathProvider インターフェースを使用して達成されました。

todo:image_alt_text

サンプルコード

注意:C:\Tempディレクトリはイメージです。実行する前に、好きなディレクトリを使用し、サンプルエクセルファイルをそのディレクトリに配置し、提供されたサンプルコード内のdirPath変数を変更し、実行してください。それにより、指定したディレクトリ内にOtherSheetsサブディレクトリが作成され、その中に2番目と3番目のワークシートのHTMLがエクスポートされます。

これらの行のコメントアウトを解除すると、Sheet1.htmlのリンクが壊れ、Sheet2.htmlまたはSheet3.htmlSheet1.html内のリンクをクリックしても開くことができなくなります

 //If you will comment this line, then hyperlinks will be broken

options.setFilePathProvider(new FilePathProvider());

提供されたサンプルエクセルファイルを使用して、以下の完全なサンプルコードを実行できます。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(OpeningFilesThroughPath.class);
// Opening from path. Creating an Workbook object with an Excel file path
Workbook workbook1 = new Workbook(dataDir + "Book1.xlsx");
// Print message
System.out.println("Workbook opened using path successfully.");

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
public class FilePathProvider {
// Gets the full path of the file by worksheet name when exporting worksheet to html separately.
// So the references among the worksheets could be exported correctly.
public String getFullName(String sheetName) {
String dataDir = Utils.getDataDir(FilePathProvider.class);
if ("Sheet2".equals(sheetName)) {
return dataDir + "Sheet2.html";
} else if ("Sheet3".equals(sheetName)) {
return dataDir + "Sheet3.html";
}
return "";
}
}