توفير مسار ملف html لورقة العمل المصدرة عبر واجهة IFilePathProvider
سيناريوهات الاستخدام الممكنة
لنفترض أن لديك ملف Excel به أوراق متعددة وتريد تصدير كل ورقة إلى ملف HTML فردي. إذا كان أي من أوراقك يحتوي على روابط لأوراق أخرى ، فسيتم قطع هذه الروابط في HTML. للتعامل مع هذه المشكلة ، يوفر Aspose.CellsIFilePathProviderواجهة يمكنك تنفيذها لإصلاح الروابط المعطلة.
قم بتوفير مسار ملف ورقة العمل 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. تم تحقيق ذلك باستخدامIFilePathProviderواجهه المستخدم.
عينة من الرموز
يرجى ملاحظة أن دليل 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 ""; | |
} | |
} |