Сохранить HTML с помощью StreamProvider
При конвертации файлов Excel, содержащих изображения и фигуры, в HTML-файлы мы часто сталкиваемся с двумя проблемами:
- Где следует сохранять изображения и фигуры при сохранении файла Excel в HTML-поток.
- Заменять путь по умолчанию на ожидаемый путь.
В данной статье объясняется, как реализовать интерфейс IStreamProvider для установки свойства HtmlSaveOptions.StreamProvider. Реализуя этот интерфейс, вы сможете сохранять созданные ресурсы во время генерации HTML в определенных местах или потоках памяти.
Образец кода
Это основной код, показывающий использование свойства HtmlSaveOptions.StreamProvider
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
String dataDir = Utils.getDataDir(HtmlSaveOptions.class); | |
Workbook wb = new Workbook(dataDir + "sample.xlsx"); | |
HtmlSaveOptions options = new HtmlSaveOptions(); | |
options.setStreamProvider(new ExportStreamProvider(dataDir)); | |
wb.save(dataDir + "out.html", options); |
Вот код для класса ExportStreamProvider, который реализует интерфейс IStreamProvider, используемый в вышеприведенном коде.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
public class ExportStreamProvider implements IStreamProvider { | |
private String outputDir; | |
public ExportStreamProvider(String dir) { | |
outputDir = dir; | |
System.out.println(outputDir); | |
} | |
@Override | |
public void closeStream(StreamProviderOptions options) throws Exception { | |
if (options != null && options.getStream() != null) { | |
options.getStream().close(); | |
} | |
} | |
@Override | |
public void initStream(StreamProviderOptions options) throws Exception { | |
System.out.println(options.getDefaultPath()); | |
File file = new File(outputDir); | |
if (!file.exists() && !file.isDirectory()) { | |
file.mkdirs(); | |
} | |
String defaultPath = options.getDefaultPath(); | |
String path = outputDir + defaultPath.substring(defaultPath.lastIndexOf("/") + 1); | |
options.setCustomPath(path); | |
options.setStream(new FileOutputStream(path)); | |
} | |
} | |