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とそのリンクの外観を示しています
以下のスクリーンショットはHTMLソースを示しています。リンクがC:\Temp\OtherSheetsディレクトリを参照するように修正されたことがわかります。これはIFilePathProvider インターフェースを使用して達成されました。
サンプルコード
注意:C:\Tempディレクトリはイメージです。実行する前に、好きなディレクトリを使用し、サンプルエクセルファイルをそのディレクトリに配置し、提供されたサンプルコード内のdirPath変数を変更し、実行してください。それにより、指定したディレクトリ内にOtherSheetsサブディレクトリが作成され、その中に2番目と3番目のワークシートのHTMLがエクスポートされます。
これらの行のコメントアウトを解除すると、Sheet1.htmlのリンクが壊れ、Sheet2.htmlまたはSheet3.htmlをSheet1.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 ""; | |
} | |
} |