WorkbookSetting.StreamProvider を使用して外部リソースを制御する
可能な使用シナリオ
Excelファイルにリンクされた画像などの外部リソースが含まれる場合があります。Aspose.Cellsを使用すると、Workbook.Settings.StreamProviderを使用してこれらの外部リソースを制御できます。これには、IStreamProviderインターフェースの実装を取るWorkbook.Settings.StreamProviderが使用されます。リンクされた画像などの外部リソースを含むワークシートをレンダリングしようとすると、IStreamProviderインターフェースのメソッドが呼び出され、外部リソースに適切な操作を実行することが可能になります。
Workbook.Settings.StreamProviderを使用して外部リソースを制御する
次のサンプルコードは、Workbook.Settings.StreamProviderの使用方法を説明しています。リンクされた画像を含むsample Excel fileをロードします。コードはリンクされた画像をAspose Logoで置き換え、SheetRenderクラスを使用してシート全体を1つのイメージにレンダリングします。次のスクリーンショットは、サンプルExcelファイルと参照用のレンダリングされた出力イメージを示しています。リンクされた画像がAspose Logoで置き換わっていることがわかります。
サンプルコード
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
//Implementation of IStreamProvider | |
class SP implements IStreamProvider | |
{ | |
public void closeStream(StreamProviderOptions arg0) throws Exception { | |
} | |
public void initStream(StreamProviderOptions options) throws Exception { | |
//Open the filestream of Aspose Logo and assign it to StreamProviderOptions.Stream property | |
File imgFile = new File(srcDir + "sampleControlExternalResourcesUsingWorkbookSetting_StreamProvider.png"); | |
byte[] bts = new byte[(int) imgFile.length()]; | |
FileInputStream fin = new FileInputStream(imgFile); | |
fin.read(bts); | |
fin.close(); | |
ByteArrayOutputStream baout = new ByteArrayOutputStream(); | |
baout.write(bts); | |
baout.close(); | |
options.setStream(baout); | |
} | |
} | |
public void Run() throws Exception { | |
System.out.println("Aspose.Cells for Java Version: " + CellsHelper.getVersion()); | |
//String srcDir = Utils.Get_SourceDirectory(); | |
//String outDir = Utils.Get_OutputDirectory(); | |
//Load sample Excel file containing the external resource e.g. linked image etc. | |
Workbook wb = new Workbook(srcDir + "sampleControlExternalResourcesUsingWorkbookSetting_StreamProvider.xlsx"); | |
//Provide your implementation of IStreamProvider | |
wb.getSettings().setStreamProvider(new SP()); | |
//Access first worksheet | |
Worksheet ws = wb.getWorksheets().get(0); | |
//Specify image or print options, we need one page per sheet and png output | |
ImageOrPrintOptions opts = new ImageOrPrintOptions(); | |
opts.setOnePagePerSheet(true); | |
opts.setImageType(ImageType.PNG); | |
//Create sheet render by passing required parameters | |
SheetRender sr = new SheetRender(ws, opts); | |
//Convert your entire worksheet into png image | |
sr.toImage(0, outDir + "outputControlExternalResourcesUsingWorkbookSettingStreamProvider.png"); | |
// Print the message | |
System.out.println("ControlExternalResourcesUsingWorkbookSetting_StreamProvider executed successfully."); | |
} | |
public static void main(String[] args) throws Exception { | |
new ControlExternalResourcesUsingWorkbookSetting_StreamProvider().Run(); | |
} |