توفير مسار ملف 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 وروابطها

ما يجب القيام به: image_بديل_نص

تُظهر لقطة الشاشة التالية المصدر HTML. كما ترى أن الروابط تشير الآن إلى دليل C: \ Temp \ OtherSheets. تم تحقيق ذلك باستخدامIFilePathProviderواجهه المستخدم.

ما يجب القيام به: image_بديل_نص

عينة من الرموز

يرجى ملاحظة أن دليل 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
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 "";
}
}