Fournir le chemin du fichier HTML de la feuille de calcul exportée via l interface IFilePathProvider
Scénarios d’utilisation possibles
Supposez que vous ayez un fichier Excel avec plusieurs feuilles et que vous souhaitiez exporter chaque feuille dans un fichier HTML individuel. Si l’une de vos feuilles contient des liens vers d’autres feuilles, alors ces liens seront rompus dans le HTML exporté. Pour résoudre ce problème, Aspose.Cells fournit l’interface IFilePathProvider que vous pouvez implémenter pour corriger les liens rompus.
Fournir le chemin du fichier HTML de la feuille de calcul exportée via l’interface IFilePathProvider
Veuillez télécharger le fichier Excel d’exemple utilisé dans le code suivant et ses fichiers HTML exportés. Tous ces fichiers sont à l’intérieur du répertoire Temp. Vous devez l’extraire sur le lecteur C: . Ensuite, cela deviendra le répertoire C:\Temp. Ensuite, vous ouvrirez le fichier Sheet1.html dans le navigateur et cliquerez sur les deux liens à l’intérieur. Ces liens font référence à ces deux feuilles de calcul HTML exportées qui se trouvent dans le répertoire C:\Temp\OtherSheets.
file:///C:/Temp/OtherSheets/Sheet2.html#RANGE!A1
file:///C:/Temp/OtherSheets/Sheet3.html#RANGE!A1
La capture d’écran suivante montre à quoi ressemblent le C:\Temp\Sheet1.html et ses liens
La capture d’écran suivante montre la source HTML. Comme vous pouvez le voir, les liens font maintenant référence au répertoire C:\Temp\OtherSheets. Cela a été réalisé en utilisant l’interface IFilePathProvider.
Code d’exemple
Veuillez noter que le répertoire C:\Temp est uniquement à des fins d’illustration. Vous pouvez utiliser n’importe quel répertoire de votre choix et placer le fichier Excel d’exemple à l’intérieur et exécuter le code d’exemple fourni. Cela créera ensuite le sous-répertoire OtherSheets à l’intérieur de votre répertoire et exportera les feuilles de calcul HTML du deuxième et du troisième à l’intérieur. Veuillez modifier la variable dirPath à l’intérieur du code fourni et la faire référence au répertoire de votre choix avant l’exécution.
Veuillez noter que commenter ces lignes à l’intérieur du code rompra les liens dans Sheet1.html et Sheet2.html ou Sheet3.html ne s’ouvriront pas lorsque leurs liens seront cliqués à l’intérieur de 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(); |
Voici le code d’exemple complet que vous pouvez exécuter avec le fichier Excel d’exemple fourni.
// 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 ""; | |
} | |
} |