Сохранить HTML с помощью StreamProvider
При преобразовании файлов Excel, содержащих изображения и формы, мы часто сталкиваемся с следующими двумя проблемами:
- Где следует сохранять изображения и фигуры при сохранении файла 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-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
string outputDir = dataDir + @"out\"; | |
// Create workbook | |
Workbook wb = new Workbook(dataDir + "sample.xlsx"); | |
HtmlSaveOptions options = new HtmlSaveOptions(); | |
options.StreamProvider = new ExportStreamProvider(outputDir); | |
// Save into .html using HtmlSaveOptions | |
wb.Save(dataDir + "output_out.html", options); |
Вот код для ExportStreamProvider класса, который реализует интерфейс IStreamProvider, используемый в вышеприведенном коде.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
public class ExportStreamProvider : IStreamProvider | |
{ | |
private string outputDir; | |
public ExportStreamProvider(string dir) | |
{ | |
outputDir = dir; | |
} | |
public void InitStream(StreamProviderOptions options) | |
{ | |
string path = outputDir + Path.GetFileName(options.DefaultPath); | |
options.CustomPath = path; | |
Directory.CreateDirectory(Path.GetDirectoryName(path)); | |
options.Stream = File.Create(path); | |
} | |
public void CloseStream(StreamProviderOptions options) | |
{ | |
if (options != null && options.Stream != null) | |
{ | |
options.Stream.Close(); | |
} | |
} | |
} |