I\'m using the OpenXml namespace in my application. I\'m using this to read the XML within an Excel file. This works fine with certain excel files but on others I get a run time
Import OpenXmlPowerTools from Nuget and use it.
using OpenXmlPowerTools;
The method needed is OpenXmlPowerTools.UriFixer.FixInvalidUri
, or you could copy the UriFixer
class from the link.
Add the FixUri()
Function to handle the broken URI's with a new defined URI.
private static Uri FixUri(string brokenUri)
{
return new Uri("http://broken-link/");
}
Add code to open the document, if the exception occurs it fixes the URI's and re-opens the fixed document.
WordprocessingDocument wDoc;
try
{
using (wDoc = WordprocessingDocument.Open(newFileName, true))
{
//Try do something
}
}
catch (OpenXmlPackageException e)
{
if (e.ToString().Contains("Invalid Hyperlink"))
{
using (FileStream fs = new FileStream(newFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
//Fix problematic URI's
UriFixer.FixInvalidUri(fs, brokenUri => FixUri(brokenUri));
}
using (wDoc = WordprocessingDocument.Open(newFileName, true))
{
//Do something without error
}
}
}