توفير مسار ملف HTML لورقة العمل المصدر من خلال واجهة IFilePathProvider
سيناريوهات الاستخدام المحتملة
لنفترض أن لديك ملف Excel بعدة أوراق وترغب في تصدير كل ورقة عمل إلى ملف HTML فردي. إذا كانت أي من الأوراق لديك تحتوي على روابط إلى أوراق أخرى، فإن هذه الروابط ستتعطل في HTML الذي تم تصديره. للتعامل مع هذه المشكلة، يوفر Aspose.Cells واجهة IFilePathProvider التي يمكنك تنفيذها لإصلاح الروابط المتعطلة.
توفير مسار ملف HTML لواجهة IFilePathProvider
يرجى تنزيل ملف Excel عينة المستخدم في الكود التالي وملفات 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. تم تحقيق ذلك باستخدام IFilePathProvider interface.
الكود المثالي
يرجى ملاحظة أن مجلد C:\Temp موجود فقط لأغراض التوضيح. يمكنك استخدام أي مجلد تختاره ووضع ملف Excel عينة داخله وتنفيذ الكود العيني المقدم. ثم سيقوم بإنشاء مجلد فرعي بعنوان 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(); |
فيما يلي الكود العيني الكامل الذي يمكنك تنفيذه مع ملف Excel عينة المقدم.
// 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 ""; | |
} | |
} |