Укажите путь к файлу html экспортированного листа через интерфейс IFilePathProvider.
Возможные сценарии использования
Предположим, у вас есть файл Excel с несколькими листами, и вы хотите экспортировать каждый лист в отдельный файл HTML. Если какой-либо из ваших листов имеет ссылки на другие листы, то эти ссылки будут нарушены в экспортированном HTML. Чтобы решить эту проблему, Aspose.Cells предоставляетИфилепаспровидеринтерфейс, который вы можете реализовать для исправления неработающих ссылок.
Укажите путь к файлу экспортированного рабочего листа HTML через интерфейс IFilePathProvider.
Пожалуйста, загрузитеобразец эксель файлаиспользуется в следующем коде и его экспортированных файлах HTML. Все эти файлы находятся внутри каталога Temp. Вы должны извлечь его на диск C:. Тогда он станет каталогом C:\Temp. Затем вы откроете файл Sheet1.html в браузере и щелкните две ссылки внутри него. Эти ссылки относятся к этим двум экспортированным рабочим листам 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. Это было достигнуто с помощьюИфилепаспровидеринтерфейс.
Образец кода
Обратите внимание, что каталог C:\Temp предназначен только для иллюстрации. Вы можете использовать любой каталог по вашему выбору и разместитьобразец эксель файлавнутри и выполните предоставленный образец кода. Затем он создаст подкаталог OtherSheets внутри вашего каталога и экспортирует в него второй и третий листы HTML. Пожалуйста, измените переменную dirPath в предоставленном коде и укажите ее в каталоге по вашему выбору перед выполнением.
Обратите внимание, что комментирование этих строк внутри кода приведет к разрыву ссылок в Sheet1.html, а Sheet2.html или Sheet3.html не будут открываться, когда их ссылки будут нажаты внутри Sheet1.html.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// If you will comment this line, then hyperlinks will be broken | |
options.FilePathProvider = new FilePathProvider(); |
Вот полный пример кода, который вы можете выполнить с предоставленнымобразец эксель файла.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
public class ExportedWorkSheetViaIFilePathProvider | |
{ | |
// This is the directory path which contains the sample.xlsx file | |
static string dirPath = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
static void Main(string[] args) | |
{ | |
// because Aspose.Cells will always make the warning worksheet as active sheet in Evaluation mode. | |
SetLicense(); | |
// Check if license is set, otherwise do not proceed | |
Workbook wb = new Workbook(); | |
if (wb.IsLicensed == false) | |
{ | |
Console.WriteLine("You must set the license to execute this code successfully."); | |
Console.ReadKey(); | |
} | |
else | |
{ | |
// Test IFilePathProvider interface | |
TestFilePathProvider(); | |
} | |
} | |
static void SetLicense() | |
{ | |
string licPath = @"Aspose.Cells.lic"; | |
Aspose.Cells.License lic = new Aspose.Cells.License(); | |
lic.SetLicense(licPath); | |
Console.WriteLine(CellsHelper.GetVersion()); | |
System.Diagnostics.Debug.WriteLine(CellsHelper.GetVersion()); | |
Environment.CurrentDirectory = dirPath; | |
} | |
static void TestFilePathProvider() | |
{ | |
// Create subdirectory for second and third worksheets | |
Directory.CreateDirectory(dirPath + "OtherSheets"); | |
// Load sample workbook from your directory | |
Workbook wb = new Workbook(dirPath + "Sample.xlsx"); | |
// Save worksheets to separate html files | |
// Because of IFilePathProvider, hyperlinks will not be broken. | |
for (int i = 0; i < wb.Worksheets.Count; i++) | |
{ | |
// Set the active worksheet to current value of variable i | |
wb.Worksheets.ActiveSheetIndex = i; | |
// Creat html save option | |
HtmlSaveOptions options = new HtmlSaveOptions(); | |
options.ExportActiveWorksheetOnly = true; | |
// If you will comment this line, then hyperlinks will be broken | |
options.FilePathProvider = new FilePathProvider(); | |
// Sheet actual index which starts from 1 not from 0 | |
int sheetIndex = i + 1; | |
string filePath = ""; | |
// Save first sheet to same directory and second and third worksheets to subdirectory | |
if (i == 0) | |
{ | |
filePath = dirPath + "Sheet1.html"; | |
} | |
else | |
{ | |
filePath = dirPath + "OtherSheets\\Sheet" + sheetIndex + "_out.html"; | |
} | |
// Save the worksheet to html file | |
wb.Save(filePath, options); | |
} | |
} | |
} | |
// Implementation of IFilePathProvider interface | |
public class FilePathProvider : IFilePathProvider | |
{ | |
// Constructor | |
public 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) | |
{ | |
if ("Sheet2".Equals(sheetName)) | |
{ | |
return @"file:///" + "OtherSheets\\Sheet2.html"; | |
} | |
else if ("Sheet3".Equals(sheetName)) | |
{ | |
return @"file:///" + "OtherSheets\\Sheet3.html"; | |
} | |
return ""; | |
} | |
} |