IFilePathProvider arabirimi aracılığıyla dışa aktarılan çalışma sayfası html dosyası yolu sağlayın
Olası Kullanım Senaryoları
Birden fazla sayfa içeren bir excel dosyanız olduğunu ve her bir sayfayı ayrı HTML dosyasına aktarmak istediğinizi varsayalım. Sayfalarınızdan herhangi birinin diğer sayfalara bağlantıları varsa, bu bağlantılar dışa aktarılan HTML’de kırılacaktır. Bu sorunu çözmek için Aspose.Cells şunları sağlar:IFilePathSağlayıcıbozuk bağlantıları düzeltmek için uygulayabileceğiniz arayüz.
IFilePathProvider arabirimi aracılığıyla dışa aktarılan çalışma sayfası HTML dosya yolunu sağlayın
Lütfen indirinörnek excel dosyasıaşağıdaki kodda ve dışa aktarılan HTML dosyalarında kullanılır. Tüm bu dosyalar Temp dizininin içindedir. C: sürücüsüne çıkartmalısınız. Sonra C:\Temp dizini olur. Ardından Sheet1.html dosyasını tarayıcıda açacak ve içindeki iki bağlantıya tıklayacaksınız. Bu bağlantılar, C:\Temp\OtherSheets dizininde bulunan, dışa aktarılan bu iki HTML çalışma sayfasına atıfta bulunur.
file:///C:/Temp/OtherSheets/Sheet2.html#RANGE!A1
file:///C:/Temp/OtherSheets/Sheet3.html#RANGE!A1
Aşağıdaki ekran görüntüsü, C:\Temp\Sheet1.html ve bağlantılarının nasıl göründüğünü gösterir.
Aşağıdaki ekran görüntüsü HTML kaynağını göstermektedir. Gördüğünüz gibi bağlantılar artık C:\Temp\OtherSheets dizinine atıfta bulunuyor. Bu, kullanılarak elde edildiIFilePathSağlayıcıarayüz.
Basit kod
Lütfen C:\Temp dizininin yalnızca açıklama amaçlı olduğunu unutmayın. İstediğiniz herhangi bir dizini ve yeri kullanabilirsiniz.örnek excel dosyasıorada ve verilen örnek kodu yürütün. Daha sonra dizininizde OtherSheets alt dizini oluşturacak ve içindeki ikinci ve üçüncü çalışma sayfalarını HTML dışa aktaracaktır. Lütfen sağlanan kodun içindeki dirPath değişkenini değiştirin ve çalıştırmadan önce onu istediğiniz dizine yönlendirin.
Lütfen kodun içindeki bu satırları yorumlamaya bakın Sheet1.html ve Sheet2.html’deki linkleri kıracak veya Sheet1.html içindeki linklere tıklandığında Sheet3.html açılmayacak
// 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(); |
Sağlananlarla çalıştırabileceğiniz tam örnek kodörnek excel dosyası.
// 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 ""; | |
} | |
} |