Controllare le risorse esterne utilizzando WorkbookSetting.StreamProvider
Possibili Scenari di Utilizzo
A volte, il tuo file Excel contiene risorse esterne come ad esempio immagini collegate, ecc. Aspose.Cells ti consente di controllare queste risorse esterne utilizzando Workbook.Settings.StreamProvider che accetta l’implementazione dell’interfaccia IStreamProvider. Ogni volta che tenterai di rendere il tuo foglio di lavoro contenente risorse esterne come ad esempio immagini collegate, verranno invocati i metodi dell’interfaccia IStreamProvider che ti consentiranno di intraprendere azioni appropriate per le tue risorse esterne.
Controllare le risorse esterne utilizzando WorkbookSetting.StreamProvider
Il seguente codice di esempio spiega l’utilizzo di Workbook.Settings.StreamProvider. Carica il file di Excel di esempio contenente un’immagine collegata. Il codice sostituisce l’immagine collegata con il logo di Aspose e rende l’intero foglio in un’unica immagine utilizzando la classe SheetRender. La seguente schermata mostra il file di Excel di esempio e la sua immagine di output renderizzata a titolo di riferimento. Come puoi vedere, l’immagine collegata danneggiata è stata sostituita dal logo di Aspose.
Codice di Esempio
// 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(); | |
} |